Java基础知识第四弹(循环)

while循环

在循环控制中,不要使用浮点值来比较值是否相等。因为浮点值都是某些值的近似值,使用它们可能导致不精确的循环次数和不准确的结果,例如下面的代码:

double item = 1;
double sum = 0;
while(item != 0){
    sum += item;
    item -= 0.1;
}
System.out.println(sum);
//1+0.9+0.8+...+0.1

因为浮点数在算术上是近似的,所以不能确保item会变成真正的0。从表面上看,这个循环似乎没有问题,但实际上他是一个无限循环。

输入和输出重定向

如果要输入大量的数值,那么从键盘上输入时非常繁琐的事。可以将这些数据用空格隔开,保存在一个名为input.txt的文本文件中,然后使用下面的命令运行这个程序:

java SentinelValue < input.txt

这个命令称为输入重定向。程序从文件input.txt中读取输入,而不是让用户在运行时从键盘输入数据。类似的,还有输出重定向,输出重定向将输出发送给文件,而不是将它们显示在控制台上。输出重定向的命令为:

Java ClassName > output.txt

可以在同一命令中同时使用输入重定向和输出重定向。例如,下面的命令从文件input.txt中获取输入,并将输出发生给文件output.txt:

java SentinelValue <input.txt> output.txt

do-while循环

如果循环中的语句至少需要执行一次,建议使用do-while循环。如果使用while循环,那么这些语句必须在循环前和循环内部都出现。

for循环

如果省略for循环中的循环继续条件,则隐含的认为循环继续条件为true。for( ; ; ){}等价于for( ; true; )等价于while(true){}

最小化数值错误

在循环继续条件中使用浮点数将导致数值错误。方法:在较大数之前先增加较小数是减小误差的一种方法。(从小到大)

关键字break和continue

continue只是跳出了一次迭代(程序控制转向该循环体的末尾),而break是跳出了整个循环。

注意:continue语句总是在一个循环内。在while和do-while循环中,continue语句之后会马上计算循环继续条件;而在for循环中,continue语句之后会立即先执行每次迭代后的动作,再计算循环继续条件。

注意:很多程序设计语言都有goto语句,goto语句可以随意地将控制转移到程序中的任意一条语句上,然后执行它。这使程序很容易出错。Java中的break语句和continue语句是不同于goto语句的。它们只能运行在循环中或者switch语句中。break语句跳出整个循环,而continue语句跳出循环的当前迭代。

发布了14 篇原创文章 · 获赞 2 · 访问量 434

猜你喜欢

转载自blog.csdn.net/weixin_43876357/article/details/100185139