JAVA基础05循环

本文详细介绍了Java中的循环结构,包括while、do-while和for循环的使用,强调了循环设计策略、循环控制以及如何避免无限循环和差一错误。此外,还探讨了输入输出重定向、循环中使用标记值控制以及break和continue的关键作用,帮助开发者更好地理解和应用Java循环。
摘要由CSDN通过智能技术生成

5. 循环

循环是用来控制语句块重复执行的一种结构循环的概念是程序设计的基础Java 提供了三种类型的循环语句:while 循环do - while 循环和 for 循环

5.1  while 循环

while 循环在条件为真的情况下重复地执行语句

while 循环的语法如下 :
while( 循环继续条件){ 
// 循环体
    语句 (组);
 }

下图给出了 while 循环的流程图循环中包含的重复执行的语句部分称为循环体(loop body)循环体的每一次执行都被认为是一次循环的迭代或重复)每个循环都含有循环继续条件,循环继续条件是一个布尔表达式控制循环体的执行在循环体执行前总是先计算循环条件以决定是否执行它。若条件为 true, 则执行循环体若条件为 false则终止整个循环,并且程序控制转移到 while 循环后的下一条语句

确切地知道循环体需要执行的次数所以使用一个控制变量 count 来对执行次数计数。这种类型的循环称为计数器控制的循环counter - controlled loop)

注意:循环继续条件应该总是放在括号内。只有当循环体只包含一条语句或不包含语句时,循环体的花括号才可以省略

注意要保证循环继续条件最终可以变为 false以便程序能够结束一个常见的程序设计错误是无限循环(也就是说循环会永远执行下去如果程序运行了不寻常的长时间而不结束,可能其中有无限循环如果你是从命令窗口运行程序的CTRL+C 键来结束

警告程序员经常会犯的错误就是使循环多执行一次或少执行一次这种情况通常称为差一错误( off - by - one error)例如下面的循环会将 Welcome to ]ava 显示 101 而不是100 次这个错误出在条件部分所以条件应该是 count<100 而不是 count<=100

int count = 0;
while (count <= 100){
    System.out.println("Weicome to Java!");
    count++; 
}

 

5.1.1 循环设计策略

编写一个正确的循环对编程新手来说并不是件容易的事编写循环时应该考虑如下三个步骤:

第一步确定需要重复的语句

第二步将这些语句放在一个循环中如下所示

while(true){
    语句组 ; 
}

第三步为循环继续条件编码并为控制循环添加适合的语句

while( 循环继续条件){
    语句组 ;
    用于控制循环的附件语句 ; 
} 

 

5.1.2 使用标记值控制循环

另一种控制循环的常用技术是在读取和处理一个集合的值时指派一个特殊值这个特殊的输人值也称为标记值(sentinel value), 用以表明循环的结束如果一个循环使用标记值来控制它的执行,它就称为标记位控制的循环sentinel - controlled loop)

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

考虑下面计算 1+0.9+0.8+ . . .+0.1的代码

double item = 1; double sum = 0;
while (item != 0) { // No guarantee item will be 0
    sum += item;
    item -= 0.1; 
}
System.out.println(sum);

变量 item 1开始每执行一次循环体就减去 0.1item 变为 0 时循环应该终止但是,因为浮点數在算术上是近似的所以不能确保 item 会变成真正的 0从表面上看,这个循环似乎没问題,但实际上它是一个无限循环

 

5.1.3 输入和输出重定向

在前面的例子中如果要输人大量的数值那么从键盘上输入是非常繁琐的事可以将这些数据用空格隔开,保存在一个名为 input.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值