本节书摘来华章计算机《交互式程序设计 第2版》一书中的第2章 ,第2.4节,Joshua Noble 著 毛顺兵 张婷婷 陈宇 沈鑫 任灿江 译更多章节内容可以访问云栖社区“华章计算机”公众号查看。
你经常需要控制程序的逻辑流程。如果某个条件成立,则执行某些操作;不成立则执行另外的操作。有时你想多次重复某个操作直到条件有所变化。你可以使用两种控制语句来实现以上提及的逻辑流程:一种是条件逻辑语句,判断条件为true还是false;另一种是循环语句,对一个操作重复一定的次数,或者一直重复到某个条件变为false为止。
if/then是一组条件逻辑语句,用法就跟这两个单词在英语中的意思差不多:“如果(if)下雨,那么(then)我就带把伞。”这个语句可以这样用:
if(条件) { 条件为true时的结果 } else { 条件为false时的结果 }紧接着“if”的圆括号里必须是一个返回布尔类型值(true或false)的表达式。例如:
int myWeight = 72; if(myWeight > 100) { print(" you're getting heavy! "); } else { print(" you're still doing ok "); } “else”不是必需的: int myHeight = 181; if(myHeight > 200) { print(" you're too tall "); }只有当if的条件语句为true时,才执行花括号里的操作;如果条件语句不为true,则什么都不做。你可以试一试把条件设为false,看看结果。
boolean allDone = false; if(!allDone) { // 如果allDone的值取反后为true print(" keep going! "); } else { print(" ok, quit! "); }条件控制语句还有一种写法:
if(age == 5){ print(" you're 5!"); } else if(age == 25) { print(" you're 25!"); } else { print(" can't login "); // 如果以上皆非 }在上面这个例子里,使用了一个新语句“else if”,其作用在于在进入else条件判断之前插入一个判断。也就是如果第一个条件不为true,那么就看else if的条件是否为true,如果仍然不为true,就流到最后的else语句。
使用for语句可以按一定的次数和条件重复同一个操作。循环经常用于遍历数组元素,逐个元素地访问、使用或变更。循环非常有用,尤其是在处理图像像素、视频帧、声音、网络数据以及其他需要分类或排序的信息的时候:
int i; for(i = 0; i < 10; i++) { print(char(i)+", "); // 将打印 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, }for语句的条件里有3个部分,如图2-5所示。整数i用来设定循环执行的次数,每次循环执行花括号里的语句。初始化for循环的时候,把i设为0,只要i不大于10,循环继续执行,每执行完一次循环,i值增加1。i也可以用自减来计数:
for(int i = 5; i>-1; i--){ print(i); }图2-5:for循环for循环另外一个巨大的用处就是遍历数组元素:
int[] intArr = {0, 1, 2, 3, 4, 5}; int sum = 0; for(int j = 0; j < 6; j++){ sum += intArr[j]; // 通过循环得到数组中的元素 }循环每执行一次,数组intArr的下一个整型元素就会累加到Sum。
while循环和for循环类似,只是看起来简单一点:
while(trueOrFalse){ //每次循环执行的操作 }只要while括号里的表达式仍然为true,循环就继续执行。要注意的是,如果括号里表达式一直不变为false,那么循环永远不会停下来,程序就会跑死。这叫“死循环”——无法终止并跳出的循环,会让程序无法使用甚至崩溃。所以在使用控制语句的时候,要对终止条件多加小心。下面是一个使用了计数器的例子:
int j = 0; while(j < 100) { print(" what's up? "+j); j++; // 如果j不自加,就会变成死循环 }每执行一次循环,j自加1。当j不小于100的时候,就会跳出循环,程序继续往下执行:
boolean ready = false; float number = 0.0; while(ready != true) { print(" we're just waiting" ); number += 0.1; if(number > 1.0){ ready = true; } } print(" we're ready ");在上面这个例子里,使用了一个自增的数和一个布尔型变量,去判断是否准备好(ready)跳出循环。直到变量ready变为true,循环才会停止,然后打印出“we抮e ready”的消息。
continue语句告知程序跳过当前循环的其他语句而直接进行下一个循环。例如,如果你要循环若干次,但只在奇数次的时候执行某些操作,可以这样做:
for(int i = 0; i< 10; i++) { if( i % 2 == 0){ continue; } println(i + " is not divisible by 2"); }程序打印出以下内容:
1 is not divisible by 2 3 is not divisible by 2 5 is not divisible by 2 7 is not divisible by 2 9 is not divisible by 2continue语句让程序跳进下一次循环。如果你有一个复杂的操作,可以使用continue语句去控制是否跳过这个操作而进入下一次循环,也就是说,可以避免程序做多余的事情。
使用break语句可中止循环。通常为了寻找某个东西而遍历一个数组,而当你找到它的时候,就可以用break语句轻松中止循环不再查找了,代码可以这样写:
int[] intArr = {1, 2, 3, 4, 5, 6, 2, 12, 2, 1, 19, 123, 1, 3, 13}; int counter = 0; while(counter < intArr.length) { if(intArr[counter] == 5) { // 正在寻找5 print(" found it at "); break; } counter++; } // break执行完毕后,代码从这里继续执行 print(counter); // 元素intArr[4]就是5 相关资源:JAVA程序设计(唐大仕)