循环结构(while、do...while、for、增强for、break与continue)

1、while循环

while是最基本的循环,语法:

while(布尔表达式){
    //循环内容
}
  • 只要布尔表达式为true,循环就会一直执行下去,一直为true则会出现【死循环】
  • 绝大部分时候会让循环停下来,因此需要一个让表达式失效的语句来结束循环
  • 极少部分情况需要循环一直执行,比如:服务器的请求响应、监听等
  • 举例:输出1-100
public class WhileDemo01 {
    public static void main(String[] args) {
        //方法1----------------------------------------------------------------------
        int i = 0;
        while(i<100){
            System.out.println(++i);//注意如果用了i++,则会输出0-99,i++会先赋值/输出,后自增
        }
        //方法2----------------------------------------------------------------------
         int i = 1;
        while(i<=100){
            System.out.println(i);
            i++;
        }
        //方法3----------------------------------------------------------------------
        int i = 0;
        while(i<100){
            i++;
            System.out.println(i);
        }
    }
}
  • 举例:输出1+2+…+100的结果
int i = 0;
int sum = 0;
while(i <= 100){
    sum = sum + i;
    i++;
}
System.out.println(sum);//5050

2、 do……while循环

  • 语法:
do{
    //代码语句
}while(布尔表达式);
  • while与do……while的区别

  • while先判断执行条件后再决定是否执行,do……while先执行一次后再判断是否继续执行

  • do……while总能保证循环体至少会被执行一次,while不符合条件的话一次都不会执行

举例:计算1+2+3+……+100

public class DoWhileDemo01 {
    public static void main(String[] args) {
        int i = 0;//初始化赋值i=1,结果也一样是5050,不影响,反而少执行了一次循环
        int sum = 0;
        do{
            sum = sum + i;
            i++;
        }while(i <= 100);
        System.out.println(sum);
    }
}

3、 for循环

for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构


for循环执行的次数是在执行前就确定好的

  • 语法
for(初始化 ; 布尔表达式 ; 迭代/更新){
    //循环体--代码语句
}
//循环体后的语句

初始化语句:最先执行,可声明一种类型,初始化一个或多个循环控制变量,可为空语句;


布尔表达式:执行初始化语句后执行,为true,则执行循环体代码语句,为false,则终止循环,执行循环体后的语句,可为空语句;


迭代/更新语句:执行一次循环后,更新循环控制变量(迭代因子控制循环变量的增减),再次执行布尔表达式,为true,则在此执行循环体代码语句


//当三个语句均为空时会出现死循环死循环

for( ; ; ){

}

举例1:计算0-100之间的奇数和、偶数和

public class ForDemo01 {
    public static void main(String[] args) {
        int eddSum = 0;//奇数和
        int evenSum = 0;//偶数和
        for (int i = 0; i < 100; i++) {
            if(i%2!=0){
                eddSum += i;
            }else{
                evenSum += i;
            }
        }
        System.out.println("奇数和:"+eddSum);
        System.out.println("偶数和:"+evenSum);
    }
}

快捷键:100.for 快捷输入循环100次的循环体

for (int i = 0; i < 100; i++) {

 }

举例2:输出1-300以内能被5整除的数,每行20个

public class ForDemo02 {
    public static void main(String[] args) {
        //1000.for写出1000的循环体
        for (int i = 1; i <= 1000; i++) {
            //用来筛选能被5整除的数
            if(i%5==0){//用来筛选能被5整除的数
                // print打印输出i,不用换行,使用转义字符留出空格
                System.out.print(i+"\t");
            }
            //设置触发条件,定位到一行的第三个数,设置换行
            if(i%(5*3)==0){
                System.out.println("");//等同于System.out.println("\n");
            }
        }
    }
}

运行结果:
5	10	15	20	25	30	35	40	45	50	55	60	65	70	75	80	85	90	95	100	
105	110	115	120	125	130	135	140	145	150	155	160	165	170	175	180	185	190	195	200	
205	210	215	220	225	230	235	240	245	250	255	260	265	270	275	280	285	290	295	300	

  • println输出完会换行,print输出完不会换行

举例3:打印九九乘法表:重点学习如何拆分完整问题,分步执行

public class ForDemo03 {
    public static void main(String[] args) {
        //5*8=40,即被乘数*乘数=积,读成8乘5等于40或5乘以8等于40
        // 3.控制被乘数的值
        for (int i = 1; i <= 9; i++) {
            //1.控制乘数,每一列的乘数都是小于或等于被乘数的,同时也是控制每一行的输出内容
            for (int j = 1; j <= i; j++) {
                //2.控制输出:被乘数*乘数=积,即i*j=ij
                System.out.print(i+"*"+j+"="+i*j+"\t");
            }
            //控制换行
            System.out.println();
        }
    }
}

运行结果:
1*1=1	
2*1=2	2*2=4	
3*1=3	3*2=6	3*3=9	
4*1=4	4*2=8	4*3=12	4*4=16	
5*1=5	5*2=10	5*3=15	5*4=20	5*5=25	
6*1=6	6*2=12	6*3=18	6*4=24	6*5=30	6*6=36	
7*1=7	7*2=14	7*3=21	7*4=28	7*5=35	7*6=42	7*7=49	
8*1=8	8*2=16	8*3=24	8*4=32	8*5=40	8*6=48	8*7=56	8*8=64	
9*1=9	9*2=18	9*3=27	9*4=36	9*5=45	9*6=54	9*7=63	9*8=72	9*9=81	

for循环和while循环转换

//while循环
int a = 1; //初始化条件
while(a <= 100){ //条件判断
	System.out.println(a); //循环体
    a++; //迭代
}

//for循环
for(int i = 1;i<=100;i++){
    System.out.println(i);
}

//for死循环
for(;;){}

4、 增强for循环

主要用于数组或集合,在jdk5引入的

语法:

for(声明语句 : 表达式){
    //代码语句
}
  • 声明语句:声明新的局部变量,该变量类型必须和数组元素的类型匹配。其作用域限定在循环语句块内,其值与此时数组元素的值相等。


    表达式:表达式是要访问的数组名,或者是返回值为数组的方法。

举例1:

public class ForDemo05 {
    public static void main(String[] args) {
        int []numbers = {10,20,30,40,50};

        //要求遍历数组中的所有的元素

        //for循环
        for (int i = 0; i < 5; i++) {
            System.out.print(numbers[i]+"\t");
        }

        System.out.println("");//换行
        System.out.println("===================");换行分割线

        //增强型for循环
        for(int i:numbers){
            System.out.print(i+"\t");
        }
    }
}

运行结果:
10	20	30	40	50	
===================
10	20	30	40	50	

5、 break和continue

  • break:在任何循环语句的主体部分,均可用break控制循环的流程。

    break用于强行退出整个循环不执行循环中剩余的语句

    (break也在switch语句中使用)


  • continue:continue语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否进行循环的判定

举例break:

int i =0;
while(i<20){
    i++;
    System.out.print(i+"\t");
    if(i==15){
        System.out.println("停止整个循环");
        break;
    }
}
运行结果:
1	2	3	4	5	6	7	8	9	10	11	12	13	14	15	停止整个循环

举例continue:

int i =0;
while(i<20){
    i++;
    System.out.print(i+"\t");
    if(i==15){
        System.out.println("停止此次循环");
        continue;
    }
}
运行结果:
1	2	3	4	5	6	7	8	9	10	11	12	13	14	15	停止此次循环
16	17	18	19	20	

6、 练习

举例:打印三角形5行

public class Test01 {
    public static void main(String[] args) {
        //控行
        for (int i = 1; i <= 5; i++) {
            //控行的空格输出
            for (int j = 5; j >= i; j--) {
                System.out.print(" ");
            }//控行的左半边的*输出
            for (int j = 1; j <= i; j++) {
                System.out.print("*");
            }//控行的右半边的*输出
            for (int j = 1; j < i; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}
运行结果:
     *			*****			    ----*			  ----*----
    ***			****- 			    ---**			  ---***---
   *****		***--		--->	--***		--->  --*****--
  *******		**---				-****			  -*******-
 *********		*----				*****			  *********
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值