Java 控制语句
本文最后更新于:2024年3月18日 凌晨
Java 控制语句
循环语句是在一定条件下反复执行一段代码,被反复执行的程序段称为循环体,Java语言中提供的循环语句有while语句,do…while语句,for语句。
While语句
while语句的格式如下。
1 |
|
while语句的执行首先检查条件表达式的值是否为真,若为真,则执行循环体,然后继续判断是否继续循环,直到条件表达式的值为假,执行后续语句,循环体通常是一个组合语句,在某些特殊情况下,也可以是单个语句。
[例3-3]:在3位数中找出所有水仙花数,水仙花数的条件是该数等于其各位数字的立方和。
分析
3位数的范围是从100开始到999,显然要对该范围内的所有数进行检查,因此可以设置一个循环变量,初始时让其为100,以后随着循环的进行不断增值,直到其值超出999结束循环,这里的一个难点是如何获取各位数字。
1 |
|
说明
在程序中用到了Math类的一个静态方法pow()
来计算某位数字的立方,第5行取最高位和第7行取最低位的方法是典型做法,但取中间那位办法变化多,第6行也可以是(n/10)%10或者(n%100)/10等。
注意
while循环的特点是"先判断,后执行"如果条件一开始就不满足。则循环执行0次。另外,在循环体中通常要执行某个操作影响循环条件的改变,如果循环条件永不改变,则循环永不终止,称此为死循环。要强制停止死循环的执行,只有按Ctrl+C快捷键。在循环程序设计中,要注意避免死循环。
[例3-4]:从键盘输入一个长整数,求其各位数字之和。
分析
这里的关键是如何得到各位数字,注意,得到一个整数的最低位数字可用除10求余数的方法,而要得到该整数的除最低为外的数只要用除10取整即可,因此,利用循环即可将一个整数的所有各位数字取出。
1 |
|
说明
程序中引入了3个变量,n记下要分析的整数,m记录其各位数字之和,a记录数据的递推变化,第9行把最低位抛去后,其值越来越小,最后变为0,则不再循环。
do…while语句
如果需要再任何情况下都执行一遍循环体,则可以采用do…while循环,其格式如下:
1 |
|
先执行循环体的语句,再检查表达式,若表达式值为真则继续循环,否则结束循环,执行后续语句。
do…while循环的特点是"先执行,后判断",循环体至少要执行一次,这点是与while循环的重要区别,在应用时要注意选择。
for语句
1 |
|
for语句执行时,首先执行初始化操作,然后判断循环条件是否满足,如果满足,则执行循环体中的语句,最后通过执行迭代部分给控制变量增值,完成以此循环后,重新判断循环条件。
for循环的优点在于变量计数的透明性,很容易看到控制变量的数值变化范围,使用for循环要注意以下几点:
- 初始化,循环条件以及迭代部分都可以为空语句(但分号不能省略),三者均为空的时候,相当于一个无限循环。
- 初始化部分和迭代部分可是使用逗号语句来进行多个操作,所谓逗号语句是用逗号分隔的语句序列,例如:
1 |
|
[例3-5]:求1+1/2+1/3+1/3+…+1/100的值。
1 |
|
说明
计算结果包括小数,所以保存计算结果的变量要定义为double类型,第5行中累加项1.0/k不能写成1/k,否则就是整除运算。
[例3-6]:求Fibonacci数列的前10个数。
Fibonacci数列指的是数列的第0个元素是0,第1个元素是1,后面的每个元素都是其前面两个元素之和,程序代码如下:
1 |
|
说明:在利用循环解决问题时经常要用到迭代推进的思想,根据Fibonacci数列规律,在循环内先计算n2,输出n2,后将变量n0,n1的值向前递推,以便下一轮求新值,注意循环体内语句的排列次序。
[例3-7]:利用随机函数产生10道两位数的加法测试题,根据用户的解答输入计算得分。
程序代码如下:
1 |
|
说明:表达式"10+(int)(Math.random()*90)"产生[10,99]之间的随机数,这里,循环起计数作用,在循环内,第6,7行产生两个被加数,第8行提示用户解答,第10行判断解答的正确性,第11行通过累加分值的方法统计得分。
循环嵌套
循环嵌套就是循环体中又含循环语句.3种循环语句可以自身嵌套,也可以相互嵌套。嵌套将循环分为内外两层,外层循环每循环一次,内循环要执行一圈。注意,编写嵌套循环时不能出现内外循环的结构交叉现象。
[例3-8]:找出3~50中的所有素数,按每行5个数输出。
分析:素数是除了1和本身,不能被其他整数整除的数,因此,要判断一个数n是否为素数可用一个循环解决,用从2~(n-1)之间的数去除n,有一个能除尽,则可断定该数不是素数,这时应结束循环,引入一个标记变量f来表示这方面的信息,f为true时表示该数为素数,为false时则表示该数不是素数。
1 |
|
说明:本例包含多种结构嵌套情况,读者需要仔细思考整个程序的组织,从循环的角度,包含一个二重循环,外层循环是有规律地变化,适合用for循环实现,内存循环要判断数n是否为素数,由于内循环的循环次数是不变的,所以采用while循环,注意循环进行的条件是f为true且控制变量<=n-1
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!