循环结构*


while 循环

while( 布尔表达式 ) { //循环内容 }

只要布尔表达式为 true,循环就会一直执行下去。循环条件一直为true就会造成无限循环【死循环】,少部分情况需要循环一直执行,比如服务器的请求响应监听等。我们正常的业务编程中应该尽量避免死循环。

用while循环实现1+2+...+100

public class Hello {
    public static void main(String[] args){
        int i=0;
        int sum=0;
        while(i <= 100){
            sum=sum+i;
            i++;
        }
        System.out.println(sum);//5050
    }
}

do…while 循环

对于while语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。
do…while 循环和while循环相似,不同的是,do…while循环至少会执行一次。

do { 

//代码语句 

}while(布尔表达式); 

public class Hello {
    public static void main(String[] args){
        int i=0;
        int sum=0;

        do {
            sum=sum+i;
            i++;
        } while(i <= 100);

        System.out.println(sum);//5050
    }
}

for循环

for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构。
for循环执行的次数是在执行前就确定的。语法格式如下:

for(初始化; 布尔表达式; 更新) { //代码语句 }

//死循环
for(;;){}
//idea快捷键 100.for
public static void main(String[] args) { 

int a = 1; //初始化 

while(a<=100){ //条件判断 

System.out.println(a); //循环体 

a+=2; //更新

}

System.out.println("while循环结束!"); 

for(int i = 1;i<=100;i++){ //初始化//条件判断 //更新 更新不止i++,也可以i=i+2等

System.out.println(i); //循环体 

}

System.out.println("while循环结束!"); 

} 

计算0到100的奇数和与偶数和

public static void main(String[] args){
        int oddsum=0;//奇数和
        int evensum=0;//偶数和

        for (int i=0;i<=100;i++){
            if (i%2!=0){
                oddsum=oddsum+i;
            }else{
                evensum=evensum+i;
            }
        }

        System.out.println("奇数的和为:"+oddsum);//2500
        System.out.println("偶数的和为:"+evensum);//2550
    }

输出1-90能被5整除的数,并且每行输出3个

public class Hello {
    public static void main(String[] args) {

        for (int i = 1; i <= 90; i++) {
            if (i % 5 == 0) {
                System.out.print(i + "\t");
            }
            if (i % (5 * 3) == 0) {//每行输出3个5的倍数的数字,每行第3个必定是15的倍数
                System.out.println();
                //System.out.print("\n")
            }
        }
    }
}

打印九九乘法表

第一步:我们先打印第一列

public static void main(String[] args) {
        for (int i=1;i<=9;i++){
            System.out.println(1+"*"+i+"="+(1*i));
        }
    }

第二步:我们把固定的1再用一个循环包起来,一列的乘法已经搞定再考虑其他列怎么实现,故再用for循环实现其他列

public static void main(String[] args) {
        for (int j=1;j<=9;j++){
            for (int i=1;i<=9;i++){
                System.out.println(j+"*"+i+"="+(j*i));
            }
        }
    }


??.
??.
??.

先不论排版,这里发现出现了重复,现在再考虑去掉重复项,而乘法表第几行就有几列,去掉重复项即去掉每行中多余的列数
for (int i=1;i<=9;i++) i<=9决定了有9行,内循环的i能控制的是行数,外循环的j控制列数
j在外循环故列数是固定了的,需要做的是确保列数为几就在第几行,如j=1,结果就要在第一行;j=2,输出的结果要在第二行...
故在内循环中令i<=j

public static void main(String[] args) {
        for (int j=1;j<=9;j++){
            for (int i=1;i<=j;i++){
                System.out.println(j+"*"+i+"="+(j*i));
            }
        }
    }


再来考虑排版的问题,做出9列
列数j+1就换行

 public static void main(String[] args) {
        for (int j=1;j<=9;j++){
            for (int i=1;i<=j;i++){
                System.out.print(i+"*"+j+"="+(j*i)+"\t");
            }
                System.out.println();
        }
    }
}

增强for循环

Java5 引入了一种主要用于数组或集合的增强型 for 循环

for(声明语句 : 表达式) { //代码句子 }

实例

public static void main(String[] args) {
       int[] numbers={10,20,30,40,50}; //定义了一个数组

        //常规
        for (int i=0;i<5;i++){
            System.out.print(numbers[i]+"\t");
        }
        System.out.println();
        System.out.println("==================================");
        //增强型
        //它把numbers中的数组每项都遍历出来赋值给了x
        for (int x:numbers){
            System.out.print(x+"\t");
        }
    }

break&continue

continue请假,break离职,return换个星球生活。

break关键字

break 主要用在循环语句或者 switch 语句中,用来跳出整个语句块。

public static void main(String[] args) {
        int i=0;
        while (i<10){
            i++;
            System.out.print(i+"\t");
            if (i==7){
                break;
            }
        }
    }

continue关键字

continue 适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代。
在 for 循环中,continue 语句使程序立即跳转到更新语句。
在 while 或者 do…while 循环中,程序立即跳转到布尔表达式的判断语句。

public static void main(String[] args) {
        int i=0;
        while (i<30){
            i++;
            if (i%10==0){
                System.out.println();
                continue;
            }
            System.out.print(i+"\t");
        }
    }