循环结构
顺序结构,从_上往下依次执行;选择结构,根据条件执行对应的内容
为什么要使用循环结构?
问题一:反复输入数字,判断输出对应是星期几。问题二:求1到100的累加和
主要内容:
while循环;do-while循环;for循环;循环嵌套;break语句;continue语句
while 循环
语法格式:
while(循环条件){ 语句; }
如果循环体只有一条语句,大括号可以省略。为避免死循环,小括号后面不要加分号
执行流程: 将小于5的整数打印输出。
int n=1;while(n<5){ //輸出n的値 n++; }
n的值必须先进行初始化
循环变量n的值必须被改变(死循环)
执行流程分析:
案例: 求1到5的累加和
package cn.mtianyan.flow2;public class PlusDemo { public static void main(String[] args) { // 求1到5的累加和 // 1+2+3+4+5 int n = 1; int sum = 0; //sum存放和变量 while (n <=5 ){ sum = sum +n; n++; // 这句不能少 } System.out.println("sum="+sum); } }
执行过程:
求1+3+5+7+...+15
sum +=n; n +=2; //替换n++ 可以实现跳值计算
案例: 循环输出26个英文字母,分两行输出
package cn.mtianyan.flow2;public class CharDemo { public static void main(String[] args) { // 循环输出26个英文小写字母,分两行输出 char ch = 'a'; int count=1; // 13个字母时换行 while (ch <= 'z'){ System.out.print(ch+""); if(count%13 == 0){ System.out.println(); } count++; ch++; } } }
运行结果:
编程练习
使用while循环求1到5的平方和。效果图:
任务
定义整型变量n作为循环变量,并初始化
定义整型变量sum存放和,并初始化
使用while循环求1到5的平方和
输出平方和
package cn.mtianyan.flow2;public class LoopDemo { public static void main(String[] args) { int n = 1; int sum = 0; while (n<=5){ sum +=(n*n); n++; } System.out.println("1到5的平方和为:"+sum); } }
运行结果:
do-while循环
语法格式
do{ 语句; } while(循环条件);
注意事项: do-while循环至少执行一次;循环条件后的分号不能丢
int n= 1;do{ //輸出n的値 n++; } while(n< 5);
局部变量使用前必须被初始化
求1到5的累加和
package cn.mtianyan.flow2;public class DoWhileDemo { public static void main(String[] args) { // 求1到5的累加和 int n=1; int sum=0; do { sum +=(n*n); n++; }while (n<=5); System.out.println("1到5的平方和为:"+sum); } }
运行结果:
案例:猜字游戏
猜字游戏。要求猜一个介于1到10之间的数字。然后将猜测的值与实际值进行比较,并给出提示,以便能更接近实际值,直到猜中为止。
程序分析:
给定要猜测的数字
使用循环结构
循环进行的条件:猜测的数据和实际值不相等
循环体的内容:输入实际值,及进行判断
输出猜到的值
package cn.mtianyan.flow2;import java.util.Scanner;public class GuessDemo { public static void main(String[] args) { // 设置要猜的数 int number = 6; int guess; System.out.println("猜一个介于1到10之间的数"); do { System.out.println("请输入您猜测的数:"); Scanner scanner = new Scanner(System.in); guess = scanner.nextInt(); if(guess >number){ System.out.println("您猜大了"); }else{ System.out.println("您猜小了"); } }while (number != guess); System.out.println("您猜中了!答案为: "+number); } }
运行结果:
将要猜的数设为随机数:
Math.random()得到[0,1)之间的随机数
// Math.random()*10+1 表示[0,10)+1:[1,11)之间的随机数。强制类型转换int之后就是1-10了 int number = (int) (Math.random()*10+1);
for循环应用及局部变量作用范围
int n=1;while(n<5) //輸出n的値 n++;
for循环语法格式:
for(表达式1;表达式2;表达式3) { 语句; }
for(int n=1;n<5;n++) { //输出语句;}
分号不可省略,可以省略表达式1,2,3。
使用for循环,求1到5的累加和。
package cn.mtianyan.flow2;public class ForDemo { public static void main(String[] args) { int sum=0; for (int n=1;n<=5;n++){ sum +=n; } // System.out.println(n); // 局部变量的作用范围 System.out.println("sum="+sum); } }
运行结果:
int n= 1;在循环体中只执行一次
局部变量,主方法中定义的都是局部变量。局部变量只在定义它的大括号内有效!
for循环的注意事项
三个表达式都是可以省略
for(表达式1;表达式2;表达式3) { 语句; }
将10以下的整数打印输出:
package cn.mtianyan.flow2;public class ForDemo1 { public static void main(String[] args) { for (int i=0;i<=10;i++){ System.out.print(i+" "); // 循环结束时i值为11 } } }
运行结果:
省略表达式:
package cn.mtianyan.flow2;public class ForDemo1 { public static void main(String[] args) { int i=0; // for(;;){ while(true){ System.out.print(i+" "); // 循环结束时i值为11 if(i>=10){ break; } i++; } } }
循环输入数字1-10并输出,如果输入0则跳出循环:
package cn.mtianyan.flow2;import java.util.Scanner;public class InputZeroBreak { public static void main(String[] args) { System.out.println("请输入你需要打印的数字,输入0时退出"); Scanner scanner = new Scanner(System.in); int n; while(true){ n = scanner.nextInt(); if(n==0){ System.out.println("接收到0输入,已退出"); break; } System.out.println("n="+n); } } }
运行结果:
package cn.mtianyan.flow2;public class ForExercise { public static void main(String[] args) { int i; int j; for (i=0,j=1;j<5;j+=3){ i = i+j; } System.out.println("i="+i); System.out.println("j="+j); } }
作者:天涯明月笙
链接:https://www.jianshu.com/p/db00ea9a00f9