循环结构语句
在实际生活中经常会将同一件事情重复做很多次。例如,在做眼保健操的第四轮刮眼眶时,会重复刮眼眶的动作;打乒乓球时,会重复挥拍的动作。在Java中有一种特殊的语句称为循环语句,可以将一段代码重复执行。循环语句分为while循环语句、do...while循环语句和for循环语句3种。
while循环语句
while 语句会反复地进行条件判断,只要条件成立,0内的执行语句就会执行,直到条件不成立,while 循环结束。
while循环语句的语法结构如下:
while(循环条件) {
执行语句
...
}
在上面的语法结构中,{}中的执行语句称为循环体,循环体是否执行取决于循环条件。当循环条件为 tue时,循环体就会执行。循环体执行完毕,程序继续判断循环条件,如果条件仍为 ue,则继续执行循环体直到循环条件为 false 时,整个循环过程才会结束。
while循环执行流程图
下面通过打印1-4之间的自然数演示while循环语句的用法
public class WhileDemo {
public static void main(String[] args) {
int x=1; //定义变量x,初始值为1
while(x<=4){ //循环条件
System.out.println("x="+x); //条件成立,打印x的值
x++; //x进行自增
}
}
}
第3行代码定义了变量x,初始值为1。在满足循环条件x<=4 的情况下,循环体会重复执行,打印x的值并让x自增。由执行流程图可知,打印结果中x的值分别为1、2、3、4。
注意:文件中第6行代码在每次循环时改变变量x的值,从而达到最终改变循环条件的目的。如果没有这行代码,x的值一直为 1,整个循环会进人无限循环状态,永远不会结束。
while循环语句程序举例
设有一张厚为0.2 mm,面积足够大的纸,将它不断地对折。试问对折多少次后,其厚度可达珠穆朗玛峰的高度( 8843.8m)。对折多少次可达0.8mm?
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
double i =0.2;
int e=0;
while(i<=8843800){
i=i*2;
e++;
}
System.out.println("折叠次数为:"+e);
}
}
运行结果:
do...while循环语句
do...while语句和while循环语句功能类似。
do...while循环语句的语法结构如下:
do {
执行语句
...
}while(循环条件);
在上面的语法结构中,do 关键字后面{}中的执行语句是循环体。do...while 循环语句将循环条件放在了循环体的后面。这也就意味着,循环体会无条件执行一次,然后再根据循环条件决定是否继续执行。
do...while循环执行流程图
下面使用do..while循环语句输出1-4的自然数演示do...while循环语句的用法
public class DoDemo {
public static void main(String[] args) {
int x=1; //定义变量x,初始值为1
do{
System.out.println("x="+x); //打印x的值
x++; //将x的值自增
}while(x<=4); //循环条件
}
}
运行结果:
while循环和do...while循环演示运行结果一致,说明 do ...while 循环和 while 循环能实现同样的功能。但是在程序运行过程中,这两种语句还是有差别的。如果循环条件在循环语句开始时就不成立,那么 while 循环的循环体一次都不会执行,而 do...while 循环的循环体会执行一次。例如,将文件中的循环条件x<=4 改为x<1.则do...while演示会打印x=1,而while演示什么也不会打印。
while循环语句程序举例
从1开始做自然数的累加,当其累加和超过1000时,共计累加了多少数 ?当时的累加和是多少?
public class Demo {
public static void main(String[] args) {
int sum=0;
int num=1;
do{
sum+=num;
num++;
}while(sum<=1000);
System.out.println("累加了"+(num-1)+"个数");
System.out.println("累加和为"+sum);
}
}
运行结果:
for循环语句
for循环通常用于已知循环次数的情况,使用该循环时,测试是否满足某个条件,如果满足条件,则进入下一次循环,否则,退出该循环。
for循环语句的语法格式如下:
for(初始化表达式;循环条件;操作表达式){
执行语句
...
}
在上面的语法格式中,for 关键字后面()中包括了三部分内容:初始化表达式、循环条件和操作表达式,它们之间用(;)分隔;{}中的执行语句为循环体。
下面通过对自然数1-4求和演示 for 循环的使用
public class For {
public static void main(String[] args) {
int sum = 0; //定义变量sum,用于记住累加的和
for(int i=1;i<=4;i++){ //i的值会在1-4变化
sum+=i; //实现sum与i的累加
}
System.out.println("sum="+sum); //打印累加的和
}
}
运行结果
在for 循环中,变量的初始值为 1,在判断条件=4 结果为 tue 的情况下执行循环体sum+=i”;执行完毕后,执行操作表达式i++,i的值变为 2,然后继续进行条件判断,开始下一次循环,直到i=5时,判断条件i<=4 结果为 false,循环结束,执行 for 循环后面的代码,打印“sum=10”。
for循环语句程序举例:
输入10个整数,分别求出所有正数之和、所有负数之和、零的个数。
import java.util.Scanner;
public class ForDemo {
public static void main(String[] args) {
int positive=0;
int negative=0;
int zero=0;
for(int i=1;i<=10;i=i+1){
Scanner scan=new Scanner(System.in);
System.out.print("请输入第"+i+"个整数:");
int num =scan.nextInt();
if(num>0){
positive=positive+num;
}
else if(num<0){
negative=negative+num;
}
else {
zero=zero+1;
}
}
System.out.println("正整数之和为"+positive+","+"负数之和为"+negative+","+"零的个数为"+zero);;
}
}
运行结果:
break语句
在 switch 条件语句和循环语句中都可以使用break语句。当它出现在switch条件语句中时,用于终止某个case并跳出swich结构;当它出现在循环语句中时,用于跳出循环语句,执行循环后面的代码。
break语句用法:
1.break用于switch语句中,终止switch语句。
2.break用于跳出本层循环,进入外层循环。
3.break在循环语句中常与条件语句一起使用。
4.break用于其他位置,毫无意义。
for(...)
{
for(...)
{
......
break;
......
}
......
}
当满足某个条件时,可以使用 break 语句来提前结束循环,无需等待循环条件的自然终止。
break代码示例运行结果如下:
public static void main(String[] args) {
for (int i=1;i<=10;i=i+1){
if(i==5){
break;
}
System.out.println(i);
}
}
当i==5时,break用于终止循环。
break语句程序举例:
请输入密码及确认密码,如果两次密码不一致,则重新输入,直至密码一致,输出“密码设置成功”。
public static void main(String[] args) {
String pwd1 = "";//pwd1存储密码
String pwd2 = "";//pwd2存储确认密码
Scanner scan=new Scanner(System.in);
while(true){//让循环一直执行
System.out.println("请输入密码:");
pwd1 = scan.nextLine();
System.out.println("请再次输入密码");
pwd2 = scan.nextLine();
if(pwd1.equals(pwd2)){//如果两次密码相等
System.out.println("密码设置成功");
break;//跳出循环
}
}
}
}
运行结果:
continue语句
continue语句用在循环语句中,它的作用是终止本次循环,执行下一次循环。
continue语句用法:
1.用于终止本次循环,跳过该循环体中位于continue后面的语句进入下次循环。
2.用于循环语句中,类似于break语句,常与条件语句一起使用。
for(...)
{
for(...)
{
......
continue;
......
}
......
}
continue代码示例运行结果如下:
public static void main(String[] args) {
for (int i=1;i<=10;i=i+1){
if(i<5){
continue;
}
System.out.println(i);
}
}
当变量i<5 时,执行 continue 语句,跳过当前循环的剩余代码,直接进行下一轮循环。该代码将输出如下结果:
continue语句程序举例:
求正整数n的所有约数及约数个数
(约数,又称因数、因子。整数a除以整数b(b≠0)除得的商正好是整数而没有余数,我们就说a能被b整除,或b能整除a。a称为b的倍数,b称为a的约数。)
public static void main(String[] args) {
int count =0;//用于统计约数个数
Scanner scan=new Scanner(System.in);
System.out.println("请输入一个正整数:");
int num = scan.nextInt();
for(int i =1;i<=num;i++){
if(num%i !=0){
continue;//不能整除,回去判断下一个数
}
System.out.print(i+" ");//输出约数
count++;//统计个数加1
}
System.out.println();
System.out.println("约数个数为"+count);
for(int i = 1;i<=num;i++){
if(num%i==0){
System.out.print(i+" ");
count++;
}
}
}
运行结果:
总结:
以下是对Java中break和continue语句的总结:
1.break语句用于终止整个循环的执行,并跳出循环体之后的代码执行。
2.continue语句用于跳过循环体中剩余的语句,直接进入下一次循环的执行。
3.break语句和continue语句通常与if语句一起使用,以便在满足某些条件时跳出循环或跳过循环的某些部分。
4.break语句和continue语句只能用于循环语句(for、while、do-while)和switch语句中。
5.在循环嵌套中,break语句和continue语句只会影响当前循环,而不会影响外层循环。