循环语句
1.for循环
1.1 for循环格式
public class TestFor01{
/*
格式:
for(初始化语句;条件判读语句;条件控制语句){
循环体语句;
}
执行流程:
1.执行初始化语句
2.执行条件判读语句,看其结果是真还是假
3.1是真则执行循环体语句,然后执行条件控制语句,然后回到第二步
3.2是假则结束循环
*/
public static void main(String[] args){
int sum = 0;
for(int a=1;a<=100;a++){
if(a%2==0){
sum=sum+a;
}
}
System.out.println(sum);
}
}
1.2 for循环实例(一行输出两个水仙花数)
public class TestFor02{
public static void main(String[] args){
int count=0;
for(int a =100;a<=999;a++){
int b=a/100;
int c=a/10%10;
int d=a%10%10;
if(b*b*b+c*c*c+d*d*d==a){
System.out.print(a+" ");//print不自动换行,+后拼接了一个空格
count++;//记录输出的水仙花个数
if(count%2==0){
System.out.println();//判断每一行水仙花个数是否达到两个,达到了换行
}
}
}
}
}
2.while 循环
2.1 while循环格式详解
public class TestWhile{
/*
基本格式:
while(条件判断语句){
循环体语句;
}
完整格式:
初始化语句;
while(条件判断语句){
循环体语句;
条件控制语句;
执行流程:
1.执行初始化语句
2.执行条件判断语句
2.1 如果结果为真执行向下执行循环体语句和条件控制语句
2.1.1 执行条件控制语句
2.1.2 回到2步骤
2.2 如果结果为假循环结束
注意事项:
1.执行次数不明确用while循环比较好
*/
public static void main(String[]args){
int a = 1;
while(a<=100){
System.out.print(a+" ");
if(a%10==0){
System.out.println();
}
a++;
}
int count = 0;
double b=0.1;
long c = 8844430;
while(b<c){
b*=2;
count++;
}
System.out.println(count);
}
}
3.do…while循环
3.1 do…while循环格式详解
public class TestDoWhile{
/*
基本格式:
do{
循环体语句;
}while(条件判断语句);
完整格式:
初始化语句;
do{
循环体语句;
条件控制语句;
}while(条件判断语句);
执行流程:
1.执行初始化语句
2.执行循环体语句
3.执行条件控制语句
4.执行条件判断语句
4.1 如果结果为真则回到步骤2
4.2 如果结果为假则循环结束
注意事项:
1.do循环无论结果为何都会先执行依次循环体语句
*/
public static void main(String[] args){
}
}
4.三种循环的区别
4.1 for循环、while循环和do循环的区别
for循环和while循环都是先判断后执行循环体,而do循环是先执行循环体后判断
4.2 for循环和while循环的区别
for循环的初始化语句在for循环的内部,for循环执行完毕之后就会释放内存,初始化语句中定义的变脸会直接消失,在for循环之外会无法访问。采用这种方法可以节省变量名。
while循环的初始化语句在while循环语句的外部,不归属其语法结构,其定义的变量在while循环结束之后可以继续使用。
4.3 三种循环的使用场景
- 明确循环次数推荐使用for循环
- 不明确循环次数推荐使用while循环
- do循环很少使用,但要知道这个循环的用法
5.死循环
5.1 三种循环语句的死循环格式
for循环的死循环格式:
for(;;){}
while循环的死循环格式://while循环的死循环用法最常用,命令提示符窗口ctrl+c可以结束死循环
while(true){}
do循环的死循环格式:
do{}while(true);
6.跳转控制语句
6.1 continue关键字,跳过某次循环
for(int a=1;a<=5;a++){
if(a==3){
continue;//当a=3时,不在控制台输出
}
Ststem.out.println(a);
}
6.2 break关键字,达到某种条件后跳出循环
for(int a=1;a<=5;a++){
if(a==3){
break;//当a=3时,结束for循环,等于循环多了一个结束条件
}
Ststem.out.println(a);
}
6.3 标号
continue和break只能跳出自己所在的那一层循环,如果想跳出或跳过指定的循环可以使用标号。
格式:
标号名:while(true){
switch(表达式){
case 常量;
break 标号名;
//此处break跳出的不是switch语句,而是指定跳出对应标号的那一层循环或者关系
}
}
7.综合使用案例
要求:制定每周的减肥计划,用户可以多次查询对应天数的计划,直到输入0后程序结束
分析:
1.用户制定每周的减肥计划,键盘录入语句可以实现,但是以目前的知识,每次程序结束后无法保存,故需要使用switch语句在后台定义好。
2.正常程序运行完毕之后会自动结束,想要继续运行需要重新执行程序,想达到用户可以多次查询而不需要多次执行程序时,可以用死循环将程序保持在查询键入查询处。
3.当用户输入0时可以跳出死循环,可以使用标号定位到死循环处,然后使用break跳出。
import java.util.Scanner;
public class ReduceWeight{
public static void main(String[] args){
System.out.println("请输入要查询的星期数");
System.out.println("退出请输入0");
Scanner sc = new Scanner(System.in);
tuichu:while(true){
int a = sc.nextInt();
switch(a){
case 0:
break tuichu;
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;
}
}
}
}
8.random
格式:
import java.util.Random;//Random是Java中已经写好的类,可以直接调用
public class TestRandom{
public static void main(String[] args){
Random r =new Random();
int a =r.nextInt(10);//()中是随机数的范围,如括号里是10,就是在0-9中获取随机数
//若想不从零开始获取数据,可以直接在new Random()后面直接运算
//例如:int a = r.nextInt(10)+1;取值范围是1到11
System.out.print(a);
}
}
9.猜数字案例实战
要求:程序自动生成一个1-100之间的数字,人使用程序实现猜出这个数字是多少
分析:
1.自动生成一个数字,需要使用随机数的类Random来生成随机数
2.人使用程序猜数字需要用到键盘录入Scanner类
3.想要猜中数字,需要判断键盘录入的数字和随机生成的数字是否一致、并且给出反馈猜的数字比实际数字大了还是小了,所以需要用到if语句
4.猜数字可能需要猜多次,需要采用死循环语句,因为不知道几次可以猜中,所以需要用到while循环
import java.util.Random;
import java.util.Scanner;
public class Test{
public static void main(String[] args){
Random r = new Random();
int a = r.nextInt(100)+1;
xunhuan1:while(true){
Scanner sr = new Scanner(System.in);
System.out.println("请输入");
int b = sr.nextInt();
if(b>a){
System.out.println("猜大了");
}else if(b<a){
System.out.println("猜小了");
}else{
System.out.println("猜中啦~");
break xunhuan1;
}
}
}
}