循环结构

循环结构

while循环

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

判断while条件是否为真,为真则执行,知道条件为假,跳出循环。注意设定while结束的条件。正常编程中应该避免死循环。

使用while循环编写程序计算一个1+2+...+100的结果:

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

Do...while循环

语法

do{   //代码语句

}while(布尔表达式);
public class DoWhileDemon1 {
    public static void main(String[] args) {
        int i = 0;
        int sum = 0;
        do {
            sum= sum + i++;

        }while (i<=100);
        System.out.println(sum);
    }
}

↑用do while写1加到100的程序,结果均为5050

while和do while的区别

while先判断后执行,do while先执行后判断,故do while总能保证循环体会被至少执行一次。

for...循环

是最有效最灵活的循环结构

语法

for(初始化;布尔表达式;更新){

// 代码语句

}

可以用快捷键100.for生成一个for循环

for和while的用法对照↓

public class ForDemon1 {
    public static void main(String[] args) {
        int a = 0; //初始化值
        while(a<100){  //布尔表达式
            a+=2;     //迭代 更新
            System.out.println(a);
        }
        System.out.println("while循环结束");

        
        
        for (int i = 0;//初始化值
             i<100;//布尔表达式
             i+=2//更新值********本次循环完成后才更新
         ){
            System.out.println(i);
        }
        System.out.println("do while循环结束");
    }
}

从程序结果看,while最后输出的数字为100,而for最后输出为98,这是因为for中的更新值,是在本次循环完成后才进行更新的(即循环体完成后更新)

练习

public class ForDemon2 {
    public static void main(String[] args) {
        
        //练习:计算0~100以内奇数的合,偶数的和
        
        int oddsum = 0;//奇
        int evensum= 0;//偶
        for (int i = 0; i <= 100; i++) {
            if (i%2==0){  //i除以2取余数等于0
               evensum+=i;
            }else {       //不等于0
                oddsum+=i;
            }
        }
        System.out.println("奇数合为:"+oddsum);
        System.out.println("偶数合为:"+evensum);
    }
}
public class ForDemon3 {
    public static void main(String[] args) {
        
        // 练习:输出0~1000内能够被5整除的数,每三个换一行
        
        for (int i = 1; i <= 1000; i++) {
            if (i%5==0){
                System.out.print(i+"\t");//不换行
                if (i%15==0){
                    System.out.println("\n");}
                    //换行
            }
        }
    }
}

↑↑在循环中首先判断是否能够被5整除,满足就输出 i 加空格;再判断是否能够被15整除,能够被15整除说明是本行第3个数,需要换行,本次循环体执行完成,i加1。(print输出不换行,println换行。)

打印九九乘法表

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

        for (int b = 1; b < 10; b++) {
            int a = 1;
            while(a<=b){
                System.out.print(a+"*"+b+"="+(a*b)+"\t"); 
                a++;
            }
            System.out.println("\n");
//a从0自增,直至a等于b,本行输出完毕,跳出while循环,再输出换行符
            //后开始for的下一次循环(每次b+1)
        }
     //for循环完毕时,表生成完成
    }
}

程序运行结果为

思路:定义a为第一个数,b为第二个数。观察乘法表发现,第一行的a均从1开始,增加到等于b为止,故使用while(a<=b)作为判断条件,当a=b是停止while循环,输出换行符。表总共有9行,即b=1一直增加到b=9,使用for (int b = 1; b < 10; b++),再将while嵌套于for循环中。即while循环形成行,而for循环形成列,将while套于for中即可形成表。

增强for循环

重点用来循环数组和集合的

语法

for(声明语句 : 表达式)

{

//代码句

}
public class ForDemon5 {
    public static void main(String[] args) {
        int[] numbers = {10, 20, 30, 40, 50};//定义一个数组,名为numbers
        for (int i = 0;i<5;i++){
            System.out.println(numbers[i]);}  //[] 括号中代表数组中的第几个数
            System.out.println("=========================");
        //遍历数组的元素 增强for循环↓
        for (int x : numbers) {
            System.out.println(x);
        }
    }
}

↑两种遍历数组的方法,得到的结果是一样的。先了解即可。

break

break用于强制退出该循环,不执行循环中剩余的语句。(循环都不干了)

public class BreakDemon1 {
    public static void main(String[] args) {
        int i = 1;
        while (i < 100) {
            System.out.println(i);
            i++;
            if (i == 30) {
                break;//跳出该循环
            }
        }
    }
}//数字只显示到29,没有到99就停止了

continue

用于终止某次循环,即跳过循环体中的尚未执行的语句,接着进行下一次是否执行循环的判断。(这次不干,下次还干)

public class Continue1 {
    public static void main(String[] args) {
        int i = 1;
        while(i<100){i++;

            if(i%5==0){System.out.println();
                       continue;}
    //如果是5的倍数,跳过本次循环,即↓不执行,回到判断
                System.out.println(i);}
    }
}    //  输出0到99,不输出5的倍数
posted @ 2020-11-04 16:32  SshadowHeart  阅读(76)  评论(0)    收藏  举报