Java流程控制1

 

DoWhile循环

while先判断后执行,dowhile先执行后判断,dowhile至少执行一次

 package com.sqdht.struct;
 
 public class DoWhileDemo01 {
     public static void main(String[] args) {
         int i=0;
         int sum=0;
 
         do {
             sum=sum+i;
             i++;
        }while (i<=100);
 
         System.out.println(sum);
    }
 }
 
 package com.sqdht.struct;
 
 public class DoWhileDemo02 {
     public static void main(String[] args) {
         int a=0;
         while (a<0){
             System.out.println(a);
             a++;
        }
         System.out.println("==========================");
         do {
             System.out.println(a);
             a++;
        }while (a<0);
    }
 }
 

 

For循环详解(重点)

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

IDEA里有快捷键 100.for

 package com.sqdht.struct;
 
 public class ForDemo01 {
     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++){
             System.out.println(i);
        }
 
         System.out.println("for循环结束");
 
         /*
         关于for循环的几点说明:
         最先执行初始化步骤,可以声明一种类型,可以初始化一个或多个循环控制变量,也可以是空语句
         然后,检测布尔表达式的值。true执行,false结束循环
         执行一次循环后,更新循环控制变量
         再次检查布尔表达式,循环上述步骤
          */
         //死循环
         for (;;){
 
        }
 
    }
 }
 
 package com.sqdht.struct;
 
 public class ForDemo02 {
     public static void main(String[] args) {
         //练习1:计算0-100之间基数和偶数的和
 
         int oddSum = 0;
         int evenSum = 0;
         for (int i = 0; i <= 100; i++) {
             if(i%2!=0){
                 oddSum+=i;
            }else {
                 evenSum+=i;
            }
        }
 
         System.out.println("奇数的和:"+oddSum);
         System.out.println("偶数的和:"+evenSum);
 
    }
 }
 
 package com.sqdht.struct;
 
 public class ForDemo03 {
     public static void main(String[] args) {
         //练习2:用while和for循环输出0-1000之间能被5整除的数,并且每行输出3个
 
         for (int i = 0; i < 1000; i++) {
             if(i%5==0){
                 System.out.print(i+"\t");
            }
             if(i%(5*3)==0){
                 System.out.print("\n");
                 //System.out.println();
            }
        }
         //print输出后不会换行
         //println输出后会换行
         int i=0;
         while(i<1000){
             if(i%5==0){
                 System.out.print(i+"\t");
            }
             if(i%15==0){
                 System.out.println();
            }
             i++;
        }
 
    }
 }
 

 

打印99乘法表

 package com.sqdht.struct;
 
 public class IfDemo04 {
     public static void main(String[] args) {
         //打印99乘法表
         for (int i = 1; i <= 9; i++) {
             for(int j = 1; j <= i; j++){
                 System.out.print(j+"*"+i+"="+(i*j)+"\t");
            }
             System.out.println();
        }
    }
 }

 

增强for循环

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

 package com.sqdht.struct;
 
 public class ForDemo05 {
     public static void main(String[] args) {
         int[] numbers = {10,20,30,40,50};  //定义了一个数组
 
         for(int i = 0; i < 5; i++){
             System.out.println(numbers[i]);
        }
         System.out.println("==========================");
         //遍历数组的元素
         for(int x:numbers){
             System.out.println(x);
        }
    }
 }
 

 

break,continue,goto

break用于强行退出循环,break可以用在switch语句中,辞职

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

goto,很烦,在java中可以通过标签(label)跟break,continue来实现类似goto的功能

 package com.sqdht.struct;
 
 public class BreakDemo {
     public static void main(String[] args) {
         int i = 0;
         while (i < 100){
             i++;
             System.out.println(i);
             if(i==30){
                 break;
            }
        }
 
         System.out.println("123");
 
    }
 }
 
 package com.sqdht.struct;
 
 public class ContinueDemo {
     public static void main(String[] args) {
         int i = 0;
         while (i<100){
             i++;
             if(i%10==0){
                 System.out.println();
                 continue;
            }
             System.out.print(i+"\t");
 
        }
    }
 }
 
 package com.sqdht.struct;
 
 public class LabelDemo {
     public static void main(String[] args) {
         //打印101到150之间所有的质数
 
         //不建议使用
         int count = 0;
         outer:for (int i = 101; i <= 150; i++) {
             for (int j = 2; j < i/2; j++) {
                 if(i % j ==0){
                     continue outer;
                }
            }
             System.out.print(i+" ");
        }
    }
 }
 

 

打印三角形以及Debug

 package com.sqdht.struct;
 
 public class TestDemo {
     public static void main(String[] args) {
         //打印三角形 5行
         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();
        }
 
    }
 }
 

Debug:加断点,点瓢虫。