一、循环语句
1、定义:
·满足一定情况下,可以重复执行的语句
·循环语句可以帮我们用很少的代码执行大量的工作
2、分类:
。for循环
。while循环
。do...while
二、for循环语句
1、格式:
for(初始化表达式;boolean;循环后表达式){
//执行语句
}
2、执行流程
。执行初始化语句
。执行判断条件,看其返回值是true还是false
·如果是true,就执行循环体
·如果是false,就结束循环
。循环体执行到最后,执行循环表达式
。再次执行判断条件,重复第二步
3、注意:
。循环前表达式:再循环开始前,无论循环多少次,这个表达式只执行一次
。关系表达式:无论是简单还是复杂,其结果必须是Boolean
。循环后表达式:在每次循环体执行完毕之后执行
。循环体如果只有一句话,大括号可以省略,但是建议不要省略
4、TestDemo
public class TestDemo{
public static void main(String[] args){
for(int i = 1 ; i<=5;i++){
int a = 10 ;
System.out.println("........");
System.out.println(a);
a++;
//a是打印了5遍10 。
}
}
}
5、①在初始化表达式中定义的变量,在整个循环结束后,会随着循环消失。
②在初始化表达式中定义的变量,属于整个循环,无论第几遍循环,用的
都是同一个变量。
③在循环体内定义的变量,在这一边循环体执行结束时,就会消亡。
6、水仙花数:
public class TestDemo{
public static void main(String[] args){
for(int i = 100 ;i<=900 ; i++){
int g = i%10 ;
int s = i/10%10 ;
int b = i/100 ;
int sum = g*g*g + s*s*s + b*b*b;
if(sum==i){
System.out.println(sum);
}
}
}
}
三、for循环的特殊格式:
1、特殊格式:
。表达式2一般不可省略,否则为无限循环
for(int i = 1 ; ; i++)
//相当于条件永为真,永不为false
。表达式3亦可以省略,但是在循环体中必须有语句修改循环变量,以使
表达式2在某一时刻为false而正常结束循环。
for(int sum = 0 , i =1 ; i <= 100 ; )
。若同时省略表达式1,表达式3,则相当于while(表达式2)语句
for( ; i <=100 ; )
。三个表达式均省略,即for( ; ;)语句,此时相当于while(true)语句
2、总结:
for循环小括号内的三部分都可以不写 中间的Boolean值默认为true
四、while循环语句
1、格式:
while(boolean){
循环语句;
控制语句;
}
2、执行流程:
。执行判断语句,看其返回值是true还是false
·如果是true,就继续执行
·如果是false,结束循环
。执行循环体
。执行控制语句
。返回第一步继续执行
3、演示:
计算1到100的和
public class TestDemo{
public static void main(String[] args){
int i = 1;
int sum = 0 ;
while(i <=100){
sum += i;
i++ ;
}
System.out.println(sum);
}
}
//当我们不需要初始化表达式和循环后表达式时,while更简洁
//当死循环或者可以调用方法来判断成功或失败时。
4、
public class TestDemo{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNextInt){
int num = sc.nextint();
System.out.println("打印结果:" + num);
}
}
}
5、测试题:打印100以内能被4整除,不能被7整除的数,每行打印6个
public class TestDemo{
public static void main(String[] args){
int i= 0 ;
int index = 1 ;//这一行中下一次打印数值的位置
while(i<=100){
if(i%4==0&&i%7!=0){//过略无效数值
if(index==6){//如果index为6,这一行本次是最后一次打印数值
System.out.println(i);//打印并换行
index = 1 ;//把计数器重置为1
}else{
System.out.print(i + "/t");//如果index不是6,说明这行还有空余位置
index++ ; //计数器+1
}
}
i++;
}
}
五、do.....while循环语句
1、格式:
do{
循环语句;
控制条件语句;
}while(boolean);
2、执行流程
。执行循环体语句
。执行控制条件语句
。执行判断条件语句,看其额返回值是true还是false
。如果是true,就继续执行循环体
。如果是false,就结束循环
3、演示:
public class TestDemo{
public static void main(String[] args){
int i = 0 ;
do{
System.out.println("nihao ");
i++ ;
}while (i>0);
}
}
4、注意事项:do....while循环无论条件是否成立循环体都会执行一次
六、关键字的使用
1、return
。可以写在方法体的任意地方
。是和方法打交道的
。结束整个方法,之后的代码全部都不在执行、
public class TestDemo{
public static void main(String[] args){
//循环任意区间内的整数,当找到7的倍数的时候终止整个方法
//如果没有找到,提示没有找到
int i =10;
int b = 100 ;
for(;i<=b ; i++){
if(i%7==0){
System.out.println("找到的7的倍数:" + i);
return;
}
}
System.out.println("没有找到");
}
}
2、break
。用在循环中或者switch语句中
。终止并跳出循环或者结束switch语句
。终止循环,
public class TestDemo{
public static void main(String[] args){
for(int i = 0 ;i<3 ; i++){
System.out.println("break 之前的语句");
if(i==1){
//忽略本次循环剩下的语句
break;
}
System.out.println("break之后的语句");
}
}
}
3、continue
。终止本次循环,继续下次循环,这次循环中continue之后的代码都不在执行
public class TestDemo{
public static void main(String[] args){
for(int i = 0 ;i<3 ; i++){
System.out.println("i的值是" +i);
if(i==1){
//忽略本次循环剩下的语句
continue;
}
System.out.println("continue之后的语句");
}
}
}
4、break、continue可用于父循环,给父循环起别名
public class TestDemo{
public static void main(String[] args){
w: for(int i =0 ;i<10 ; i++){
//外循环语句
System.out.println("外循环语句......前");
for(int j = 0 ; j <10 ; j+=){
break w ;
}
System.out.println("外循环语句.....后");
}
}
}
5、循环嵌套案例
public class TestDemo{
public static void main(String[] args){
// for(int j = 1; j<=5 ; j++){//控制着总行数
// for(int i = 1 ; i<=j ; i++){//控制着每行打印多少颗星星
// System.out.println("*");
// }
// System.out.println();//换行
// }
// for(int j = 1; j<=9 ; j++){//控制着总行数
// for(int i = 1 ; i<=j ; i++){//控制着每行打印多少颗星星
// System.out.println("*");
// }
// System.out.println();//换行
// }
}
}
6、九九乘法表
public class TestDemo{
public static void main(String[] args) throws Exception{
for(int j = 1; j<=9 ; j++){//控制着总行数
for(int i = 1 ; i<=j ; i++){//控制着每行打印多少颗星星
System.out.println(i + "*" +j +"=" +(j*i) + "\t");
Thread.sleep(238);
}
System.out.println();//换行
Thread.sleep(200);
}
}
}