“Java的while循环”的版本间的差异
(→while循环) |
(→循环条件可以变吗?) |
||
(未显示2个用户的35个中间版本) | |||
第1行: | 第1行: | ||
− | == | + | ==什么是循环语句== |
− | + | 循环语句就是让计算机根据条件做循环计算,在条件满足时继续循环,条件不满足时退出循环。 | |
− | + | 程序是为了解决实际问题的,实际问题中存在着重复动作,那么程序中也应该有相应的描述,这就是循环。 | |
− | |||
− | |||
− | |||
− | + | 软件中有许多重复的动作: | |
+ | |||
+ | (1)音乐软件循环播放某一首歌 | ||
+ | |||
+ | (2)社交软件向多人发送同一条信息 | ||
+ | |||
+ | (3) 数学软件累加求和,累加求积。 | ||
+ | |||
+ | 循环语句就是程序语言解决这种重复性计算的一种手段。 | ||
+ | |||
+ | 比方说,案例:计算1+2+3+……+10 | ||
+ | |||
+ | 除了用数列公式外,完全可以让计算机做100次循环累加。因为计算机的特点是计算速度非常快,我们让计算机循环一亿次也用不到1秒,所以很多计算的任务,人去算是算不了的,但是计算机算,使用循环这种简单粗暴的方法就可以快速得到结果。 | ||
+ | |||
+ | <nowiki>public class Main { | ||
+ | |||
+ | public static void main(String[] args) { | ||
+ | // TODO Auto-generated method stub | ||
+ | int sum=0; | ||
+ | sum =sum+1; | ||
+ | sum =sum+2; | ||
+ | sum =sum+3; | ||
+ | sum =sum+4; | ||
+ | sum =sum+5; | ||
+ | |||
+ | }</nowiki> | ||
+ | |||
+ | 但是这样写法太麻烦,在程序语言中我们更愿意这样写: | ||
+ | |||
+ | <nowiki> | ||
+ | public class Sum { | ||
+ | |||
+ | public static void main(String[] args) { | ||
+ | // TODO Auto-generated method stub | ||
+ | int i = 1; | ||
+ | int sum = 0; | ||
+ | while(i < 11 ){ | ||
+ | sum = sum + i;//程序不断的求和 | ||
+ | i++;//数字不断的增加 | ||
+ | } | ||
+ | System.out.println("sum="+sum); | ||
+ | } | ||
+ | |||
+ | }</nowiki> | ||
+ | *[[文件:java2-16.png]] | ||
==while循环== | ==while循环== | ||
+ | ===语法格式=== | ||
*while循环的语法格式如下: | *while循环的语法格式如下: | ||
+ | |||
<nowiki>[初始化语句] | <nowiki>[初始化语句] | ||
while (判断条件) | while (判断条件) | ||
第17行: | 第60行: | ||
[迭代语句] | [迭代语句] | ||
}</nowiki> | }</nowiki> | ||
− | * | + | ===语句组成=== |
− | * | + | |
− | * | + | 循环语句一般包含如下4个部分: |
− | <nowiki>public class | + | |
+ | *'''初始化语句''':在循环开始之前进行变量初始化的语句,对循环中用到的变量进行赋值。 | ||
+ | *'''循环条件''':这是一个布尔表达式,这个表达式能决定是否执行循环体。 | ||
+ | *'''循环体''':这个部分是循环的主体,是满足循环条件的情况下,将被反复执行的语句。 | ||
+ | *'''迭代语句''':主要负责每次循环体执行结束后,对循环变量进行更新。 | ||
+ | |||
+ | 这四个部分只是一般性的分类,并不是每个循环中都非常清晰地分出了这四个部分。 | ||
+ | |||
+ | |||
+ | <nowiki> | ||
+ | public class Sum { | ||
+ | |||
public static void main(String[] args) { | public static void main(String[] args) { | ||
− | // | + | // TODO Auto-generated method stub |
− | int | + | int i = 1; |
− | // | + | int sum = 0; |
− | while( | + | while(i < 11 ){ |
− | System.out. | + | sum = sum + i;//程序不断的求和 |
− | // | + | i++;//数字不断的增加 |
− | + | } | |
+ | System.out.println("sum="+sum); | ||
+ | } | ||
+ | |||
+ | }</nowiki> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===执行顺序=== | ||
+ | 为了描述方便,我们把初始化语句、循环条件语句、变量更新语句 分别命名为 A,B,C | ||
+ | |||
+ | <nowiki> | ||
+ | 语句A; | ||
+ | while(语句B){ | ||
+ | 循环体; | ||
+ | 语句C; | ||
+ | }</nowiki> | ||
+ | |||
+ | 其中,语句A在整个循环过程中,只会执行一次;语句B必须是布尔类型的表达式(当然也可以不写,如果写就必须是布尔类型表达式),通过该布尔表达式去判断是否继续执行循环体;语句C会在每次循环结束后执行,也就是说,循环体执行多少次,语句C就会执行多少次。 | ||
+ | |||
+ | 那么语句的执行顺序是: | ||
+ | |||
+ | 语句A→(语句B → 循环体 → 语句C)→(语句B → 循环体 → 语句C)→ ... →退出循环 | ||
+ | |||
+ | *也可以通过下面这个图看出来 | ||
+ | *[[文件:java2-18.png]] | ||
+ | |||
+ | *while循环每次执行循环体之前,先对变量进行初始化,然后对判断条件(也就是循环条件)求值,如果循环条件为true,则运行循环体部分。从上面的的语法格式来看,迭代语句一般位于循环体的最后,因此只有当循环体能成功执行完成时,while循环才会执行迭代语句。 | ||
+ | |||
+ | *例如:计算1+2+3+4+...+10 | ||
+ | |||
+ | |||
+ | |||
+ | *练习:使用while循环计算1累加至1000。 | ||
+ | *练习:求10的阶乘。10!= 1x2x3x…..x10。。 | ||
+ | ==实例:while 循环简单应用== | ||
+ | ===循环播放歌曲=== | ||
+ | |||
+ | <nowiki>package task4; | ||
+ | |||
+ | public class While { | ||
+ | |||
+ | public static void main(String[] args) { | ||
+ | // TODO Auto-generated method stub | ||
+ | int i=0; | ||
+ | while(i<5) { | ||
+ | System.out.println("世上有朵美丽的花"); | ||
+ | System.out.println("那是青春吐芳华"); | ||
+ | System.out.println("。。。"); | ||
+ | i++; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </nowiki> | ||
+ | |||
+ | ===群发拜年短信=== | ||
+ | <nowiki> | ||
+ | |||
+ | String [] menu = {"同学甲","同学乙","同学丙","好友A","好友丙"}; | ||
+ | int j=0; | ||
+ | while(j<5){ | ||
+ | System.out.println(menu[j]+" 新年快乐 !小王给您拜年了 !"); | ||
+ | j++; | ||
+ | }</nowiki> | ||
+ | |||
+ | ===进行科学计算=== | ||
+ | 什么是斐波那契数列,1,1,2,3,5,8,13...所有的数列的值都是前一项和前一项的前一项的加和,也就是f(n) = f(n-1) + f(n-2)这样一个数列就是斐波那契数 | ||
+ | |||
+ | <nowiki> | ||
+ | int a=1,b=1; | ||
+ | |||
+ | while(a<1000 && b<1000) { | ||
+ | |||
+ | System.out.print(a+" "+b+" "); | ||
+ | |||
+ | a=a+b;//新的a 等于旧a + 旧b | ||
+ | |||
+ | b=a+b;//新的b 等于旧a + 旧b | ||
+ | |||
+ | } | ||
+ | </nowiki> | ||
+ | |||
+ | 练习:2006年培养学员8万人,每年增长25%,请问按此增长速度,到哪一年培训学员人数将达到20万人? | ||
+ | |||
+ | <nowiki>int i = 2006;double sum=8; | ||
+ | while(sum<20) { | ||
+ | sum=sum+sum*0.25; | ||
+ | //i++;这一句可以省略 | ||
+ | } | ||
+ | System.out.println(i+"年将达到20万");</nowiki> | ||
+ | |||
+ | ===循环输入信息=== | ||
+ | |||
+ | <nowiki> | ||
+ | import java.util.Scanner; | ||
+ | |||
+ | public class Main { | ||
+ | |||
+ | public static void main(String[] args) { | ||
+ | // TODO Auto-generated method stub | ||
+ | Scanner input = new Scanner(System.in); | ||
+ | |||
+ | int score;String s; | ||
+ | int i=0; | ||
+ | while(true) {//循环条件为true,永远执行 | ||
+ | System.out.println("请输入同学的成绩:"); | ||
+ | s=input.next(); | ||
+ | if(s.equals("q")) {//当输入‘q'时,执行break语句跳出循环, | ||
+ | break; | ||
+ | }else {//当输入其他值时打印成绩 | ||
+ | score=Integer.valueOf(s); | ||
+ | System.out.println("同学的成绩为:"+score); | ||
+ | } | ||
+ | i++;//由于这里的while循环不限定次数,也不计数,因此这里的i++也可省略 | ||
+ | |||
+ | } | ||
+ | |||
+ | System.out.println("录入完毕"); | ||
+ | input.close(); | ||
+ | } | ||
+ | |||
+ | }</nowiki></nowiki> | ||
+ | |||
+ | 问题:面馆点单程序 | ||
+ | |||
+ | |||
+ | *列出菜单,让顾客选择,无限次重复以上过程。 | ||
+ | |||
+ | 头脑风暴:增加一个功能:无限循环,按q退出。 | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | <nowiki>例 面馆程序: | ||
+ | |||
+ | <nowiki> | ||
+ | package test; | ||
+ | import java.util.Scanner; | ||
+ | public class a7 { | ||
+ | |||
+ | public static void main(String[] args) { | ||
+ | // TODO 自动生成的方法存根 | ||
+ | Scanner sc = new Scanner (System.in); | ||
+ | while (true){ | ||
+ | System.out.println("客观,请问您需要什么面:"); | ||
+ | System.out.print("1.刀削面\n2.蛋黄面\n3.玉米面\n4.牛筋面\n5.幸福小丸仔面\n"); | ||
+ | int m = sc.nextInt(); | ||
+ | switch (m){ | ||
+ | case 1: | ||
+ | System.out.println("您选择的是刀削面"); | ||
+ | break; | ||
+ | case 2: | ||
+ | System.out.println("您选择的是蛋黄面"); | ||
+ | break; | ||
+ | case 3: | ||
+ | System.out.println("您选择的是玉米面"); | ||
+ | break; | ||
+ | case 4: | ||
+ | System.out.println("您选择的是牛筋面"); | ||
+ | break; | ||
+ | case 5: | ||
+ | System.out.println("您选择的是幸福小丸仔面"); | ||
+ | break; | ||
+ | default: | ||
+ | System.out.println("对不起 输入错误"); | ||
+ | break; | ||
+ | } | ||
} | } | ||
− | + | ||
} | } | ||
− | }</nowiki> | + | |
+ | } | ||
+ | </nowiki> | ||
+ | |||
+ | ==深入:关于while循环的几点讨论== | ||
+ | ===死循环=== | ||
*使用while循环时,一定要保证循环条件有编程false的时候,否则这个循环将成为一个死循环,永远无法结束这个循环。例如: | *使用while循环时,一定要保证循环条件有编程false的时候,否则这个循环将成为一个死循环,永远无法结束这个循环。例如: | ||
<nowiki>public class WhileTestTwo { | <nowiki>public class WhileTestTwo { | ||
第40行: | 第267行: | ||
// 当count小于10时,执行循环体 | // 当count小于10时,执行循环体 | ||
while(count < 10) { | while(count < 10) { | ||
− | System.out.println(" | + | System.out.println("五环之歌第 "+count+" 遍!"); |
//迭代语句 | //迭代语句 | ||
count--; | count--; | ||
第49行: | 第276行: | ||
*在上面的代码中,count的值越来越小,这将导致count值永远小于10,count<10循环条件一直为true,从而导致这个循环永远无法结束。 | *在上面的代码中,count的值越来越小,这将导致count值永远小于10,count<10循环条件一直为true,从而导致这个循环永远无法结束。 | ||
− | + | 由于while循环 的次数有时并不确定,因此 我们可以用break和continue等流程控制语句来终止循环。 | |
− | + | ||
− | + | <nowiki> | |
+ | |||
+ | <nowiki> | ||
+ | import java.util.Scanner; | ||
+ | |||
+ | public class Main { | ||
+ | |||
public static void main(String[] args) { | public static void main(String[] args) { | ||
− | + | // TODO Auto-generated method stub | |
− | + | Scanner input = new Scanner(System.in); | |
− | + | ||
− | + | int score;String s; | |
− | + | int i=0; | |
− | + | while(true) { | |
− | + | System.out.println("请输入同学的成绩:"); | |
− | + | s=input.next(); | |
− | + | if(s.equals("q")) { | |
+ | break; | ||
+ | }else { | ||
+ | score=Integer.valueOf(s); | ||
+ | System.out.println("同学的成绩为:"+score); | ||
+ | } | ||
+ | i++; | ||
+ | |||
+ | } | ||
+ | |||
+ | System.out.println("录入完毕"); | ||
+ | input.close(); | ||
} | } | ||
− | }</nowiki> | + | |
− | * | + | }</nowiki></nowiki> |
− | <nowiki>public class | + | |
+ | ===循环条件可以变吗?=== | ||
+ | 答案:可以 | ||
+ | |||
+ | 循环条件可以是任意的布尔表达式的组合。 | ||
+ | |||
+ | *求1~100的前10个偶数: | ||
+ | |||
+ | <nowiki>package task4; | ||
+ | |||
+ | public class For { | ||
+ | |||
public static void main(String[] args) { | public static void main(String[] args) { | ||
− | + | // TODO Auto-generated method stub | |
− | int i = 1 | + | |
− | + | int count=0; | |
− | + | int i=1; | |
− | if(){ | + | while(i<101 &&count<5){ |
− | + | if(i%2==0) { | |
− | + | System.out.println(i); | |
− | + | count++; | |
− | + | } | |
+ | i++ | ||
+ | } | ||
} | } | ||
− | }</nowiki> | + | |
+ | } | ||
+ | </nowiki> | ||
+ | |||
+ | ===变量迭代语句可以变吗 ?=== | ||
+ | 答案:可以 | ||
+ | |||
+ | 任何使变量得到改变的式子都可以。 | ||
+ | |||
+ | *求1+2+4+...+ 64 | ||
+ | |||
+ | <nowiki>int sum=0; | ||
+ | int i=1; | ||
+ | while(i<=64){ | ||
+ | sum +=i; | ||
+ | i=i*2; | ||
+ | } | ||
+ | System.out.println("sum="+sum);</nowiki> | ||
+ | |||
+ | *头脑风暴:迭代语句可有可无吗 ?试试把i=i*2去掉。 | ||
+ | |||
+ | |||
*用while编写程序,接收身高、体重等数据,能够不断计算不同用户的BMI值, | *用while编写程序,接收身高、体重等数据,能够不断计算不同用户的BMI值, | ||
第97行: | 第375行: | ||
}</nowiki> | }</nowiki> | ||
+ | |||
+ | |||
+ | 思考:以上代码代表什么意思 ?有什么方法能持续地执行上述游戏 ? | ||
+ | |||
+ | ==Java练习题== | ||
*练习:使用while循环计算1累加至1000。 | *练习:使用while循环计算1累加至1000。 | ||
*练习:求10的阶乘。10!= 1x2x3x…..x10。。 | *练习:求10的阶乘。10!= 1x2x3x…..x10。。 | ||
*2006年培养学员8万人,每年增长25%,请问按此增长速度,到哪一年培训学员人数将达到20万人? | *2006年培养学员8万人,每年增长25%,请问按此增长速度,到哪一年培训学员人数将达到20万人? | ||
− | + | ||
+ | ==练习题答案== | ||
+ | <nowiki>1. | ||
+ | public class test{ | ||
+ | |||
+ | public static void main(String[] args) { | ||
+ | |||
+ | int count = 1,sum=0; | ||
+ | // 当count小于10时,执行循环体 | ||
+ | while(count <1001) { | ||
+ | sum += count; | ||
+ | //迭代语句 | ||
+ | count++; | ||
+ | } | ||
+ | System.out.println("1~100累加的结果为:"+sum); | ||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | 2. | ||
+ | public class test1 { | ||
+ | |||
+ | public static void main(String[] args) { | ||
+ | // TODO Auto-generated method stub | ||
+ | int i = 1,sum=1; | ||
+ | while(i <11) { | ||
+ | sum=sum*i; | ||
+ | i++; | ||
+ | } | ||
+ | System.out.println("10!="+sum); | ||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | 3. | ||
+ | public class test2 { | ||
+ | |||
+ | public static void main(String[] args) { | ||
+ | // TODO Auto-generated method stub | ||
+ | int i = 2006;double sum=8; | ||
+ | while(sum<=20) { | ||
+ | sum=sum+sum*0.25; | ||
+ | i++; | ||
+ | } | ||
+ | System.out.println(i+"年将达到20万"); | ||
+ | } | ||
+ | |||
+ | |||
+ | }</nowiki> | ||
+ | |||
+ | 参考文档:https://blog.csdn.net/weixin_38362146/article/details/78023104 |
2020年3月27日 (五) 09:32的最新版本
目录
什么是循环语句
循环语句就是让计算机根据条件做循环计算,在条件满足时继续循环,条件不满足时退出循环。
程序是为了解决实际问题的,实际问题中存在着重复动作,那么程序中也应该有相应的描述,这就是循环。
软件中有许多重复的动作:
(1)音乐软件循环播放某一首歌
(2)社交软件向多人发送同一条信息
(3) 数学软件累加求和,累加求积。
循环语句就是程序语言解决这种重复性计算的一种手段。
比方说,案例:计算1+2+3+……+10
除了用数列公式外,完全可以让计算机做100次循环累加。因为计算机的特点是计算速度非常快,我们让计算机循环一亿次也用不到1秒,所以很多计算的任务,人去算是算不了的,但是计算机算,使用循环这种简单粗暴的方法就可以快速得到结果。
public class Main { public static void main(String[] args) { // TODO Auto-generated method stub int sum=0; sum =sum+1; sum =sum+2; sum =sum+3; sum =sum+4; sum =sum+5; }
但是这样写法太麻烦,在程序语言中我们更愿意这样写:
public class Sum { public static void main(String[] args) { // TODO Auto-generated method stub int i = 1; int sum = 0; while(i < 11 ){ sum = sum + i;//程序不断的求和 i++;//数字不断的增加 } System.out.println("sum="+sum); } }
while循环
语法格式
- while循环的语法格式如下:
[初始化语句] while (判断条件) { 循环体语句块 [迭代语句] }
语句组成
循环语句一般包含如下4个部分:
- 初始化语句:在循环开始之前进行变量初始化的语句,对循环中用到的变量进行赋值。
- 循环条件:这是一个布尔表达式,这个表达式能决定是否执行循环体。
- 循环体:这个部分是循环的主体,是满足循环条件的情况下,将被反复执行的语句。
- 迭代语句:主要负责每次循环体执行结束后,对循环变量进行更新。
这四个部分只是一般性的分类,并不是每个循环中都非常清晰地分出了这四个部分。
public class Sum { public static void main(String[] args) { // TODO Auto-generated method stub int i = 1; int sum = 0; while(i < 11 ){ sum = sum + i;//程序不断的求和 i++;//数字不断的增加 } System.out.println("sum="+sum); } }
执行顺序
为了描述方便,我们把初始化语句、循环条件语句、变量更新语句 分别命名为 A,B,C
语句A; while(语句B){ 循环体; 语句C; }
其中,语句A在整个循环过程中,只会执行一次;语句B必须是布尔类型的表达式(当然也可以不写,如果写就必须是布尔类型表达式),通过该布尔表达式去判断是否继续执行循环体;语句C会在每次循环结束后执行,也就是说,循环体执行多少次,语句C就会执行多少次。
那么语句的执行顺序是:
语句A→(语句B → 循环体 → 语句C)→(语句B → 循环体 → 语句C)→ ... →退出循环
- while循环每次执行循环体之前,先对变量进行初始化,然后对判断条件(也就是循环条件)求值,如果循环条件为true,则运行循环体部分。从上面的的语法格式来看,迭代语句一般位于循环体的最后,因此只有当循环体能成功执行完成时,while循环才会执行迭代语句。
- 例如:计算1+2+3+4+...+10
- 练习:使用while循环计算1累加至1000。
- 练习:求10的阶乘。10!= 1x2x3x…..x10。。
实例:while 循环简单应用
循环播放歌曲
package task4; public class While { public static void main(String[] args) { // TODO Auto-generated method stub int i=0; while(i<5) { System.out.println("世上有朵美丽的花"); System.out.println("那是青春吐芳华"); System.out.println("。。。"); i++; } } }
群发拜年短信
String [] menu = {"同学甲","同学乙","同学丙","好友A","好友丙"}; int j=0; while(j<5){ System.out.println(menu[j]+" 新年快乐 !小王给您拜年了 !"); j++; }
进行科学计算
什么是斐波那契数列,1,1,2,3,5,8,13...所有的数列的值都是前一项和前一项的前一项的加和,也就是f(n) = f(n-1) + f(n-2)这样一个数列就是斐波那契数
int a=1,b=1; while(a<1000 && b<1000) { System.out.print(a+" "+b+" "); a=a+b;//新的a 等于旧a + 旧b b=a+b;//新的b 等于旧a + 旧b }
练习:2006年培养学员8万人,每年增长25%,请问按此增长速度,到哪一年培训学员人数将达到20万人?
int i = 2006;double sum=8; while(sum<20) { sum=sum+sum*0.25; //i++;这一句可以省略 } System.out.println(i+"年将达到20万");
循环输入信息
import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); int score;String s; int i=0; while(true) {//循环条件为true,永远执行 System.out.println("请输入同学的成绩:"); s=input.next(); if(s.equals("q")) {//当输入‘q'时,执行break语句跳出循环, break; }else {//当输入其他值时打印成绩 score=Integer.valueOf(s); System.out.println("同学的成绩为:"+score); } i++;//由于这里的while循环不限定次数,也不计数,因此这里的i++也可省略 } System.out.println("录入完毕"); input.close(); } }</nowiki>
问题:面馆点单程序
- 列出菜单,让顾客选择,无限次重复以上过程。
头脑风暴:增加一个功能:无限循环,按q退出。
例 面馆程序: <nowiki> package test; import java.util.Scanner; public class a7 { public static void main(String[] args) { // TODO 自动生成的方法存根 Scanner sc = new Scanner (System.in); while (true){ System.out.println("客观,请问您需要什么面:"); System.out.print("1.刀削面\n2.蛋黄面\n3.玉米面\n4.牛筋面\n5.幸福小丸仔面\n"); int m = sc.nextInt(); switch (m){ case 1: System.out.println("您选择的是刀削面"); break; case 2: System.out.println("您选择的是蛋黄面"); break; case 3: System.out.println("您选择的是玉米面"); break; case 4: System.out.println("您选择的是牛筋面"); break; case 5: System.out.println("您选择的是幸福小丸仔面"); break; default: System.out.println("对不起 输入错误"); break; } } } }
深入:关于while循环的几点讨论
死循环
- 使用while循环时,一定要保证循环条件有编程false的时候,否则这个循环将成为一个死循环,永远无法结束这个循环。例如:
public class WhileTestTwo { public static void main(String[] args) { // 下面是一个死循环 int count = 0; // 当count小于10时,执行循环体 while(count < 10) { System.out.println("五环之歌第 "+count+" 遍!"); //迭代语句 count--; } System.out.println("永远无法跳出的循环体"); } }
- 在上面的代码中,count的值越来越小,这将导致count值永远小于10,count<10循环条件一直为true,从而导致这个循环永远无法结束。
由于while循环 的次数有时并不确定,因此 我们可以用break和continue等流程控制语句来终止循环。
<nowiki> import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); int score;String s; int i=0; while(true) { System.out.println("请输入同学的成绩:"); s=input.next(); if(s.equals("q")) { break; }else { score=Integer.valueOf(s); System.out.println("同学的成绩为:"+score); } i++; } System.out.println("录入完毕"); input.close(); } }</nowiki>
循环条件可以变吗?
答案:可以
循环条件可以是任意的布尔表达式的组合。
- 求1~100的前10个偶数:
package task4; public class For { public static void main(String[] args) { // TODO Auto-generated method stub int count=0; int i=1; while(i<101 &&count<5){ if(i%2==0) { System.out.println(i); count++; } i++ } } }
变量迭代语句可以变吗 ?
答案:可以
任何使变量得到改变的式子都可以。
- 求1+2+4+...+ 64
int sum=0; int i=1; while(i<=64){ sum +=i; i=i*2; } System.out.println("sum="+sum);
- 头脑风暴:迭代语句可有可无吗 ?试试把i=i*2去掉。
- 用while编写程序,接收身高、体重等数据,能够不断计算不同用户的BMI值,
体质指数(BMI)=体重(kg)÷(身高(m)*身高(m))
public class WhileTestTwo { public static void main(String[] args) { while(True) { Scanner scanner = new Scanner(System.in); float height = scanner.nextFloat(); float weight = scanner.nextFloat(); float BMI = height/(weight*weight); System.out.println("您的BMI指数为:"+BMI); } } }
思考:以上代码代表什么意思 ?有什么方法能持续地执行上述游戏 ?
Java练习题
- 练习:使用while循环计算1累加至1000。
- 练习:求10的阶乘。10!= 1x2x3x…..x10。。
- 2006年培养学员8万人,每年增长25%,请问按此增长速度,到哪一年培训学员人数将达到20万人?
练习题答案
1. public class test{ public static void main(String[] args) { int count = 1,sum=0; // 当count小于10时,执行循环体 while(count <1001) { sum += count; //迭代语句 count++; } System.out.println("1~100累加的结果为:"+sum); } } 2. public class test1 { public static void main(String[] args) { // TODO Auto-generated method stub int i = 1,sum=1; while(i <11) { sum=sum*i; i++; } System.out.println("10!="+sum); } } 3. public class test2 { public static void main(String[] args) { // TODO Auto-generated method stub int i = 2006;double sum=8; while(sum<=20) { sum=sum+sum*0.25; i++; } System.out.println(i+"年将达到20万"); } }
参考文档:https://blog.csdn.net/weixin_38362146/article/details/78023104