Java学习笔记:控制流程之 for 、continue 和 break

Java学习笔记:控制流程之 for 、continue 和 break

  • 学习参考网址https://how2j.cn/p/6235

FOR循环

  • for循环,和while一样,只是表达方式不一样
  • for
    • 比较for和while
public class HelloWorld {
    public static void main(String[] args) {
           
        //使用while打印0到4    
        int i = 0;
        while(i<5){
            System.out.println("while循环输出的"+i);
            i++;
        }
          
        //使用for打印0到4    
        for (int j = 0; j < 5; j++) {
            System.out.println("for  循环输出的"+j);
        }
    }
}
  • 演示案例:
    • 天朝有一个乞丐姓洪,去天桥要钱
    • 第一天要了1块钱
    • 第二天要了2块钱
    • 第三天要了4块钱
    • 第四天要了8块钱
    • 以此类推
    • 问题: 洪乞丐干10天,收入是多少?
public class HelloWorld {
    public static void main(String[] args) {
 
        int moneyEachDay = 0;
        int day = 10;
        int sum=0;
        for (int i = 1; i <= day; i++) {
            if(0==moneyEachDay)
                moneyEachDay = 1;
            else
                moneyEachDay *= 2;
             
            sum+=moneyEachDay;
             
            System.out.println(i + " 天之后,洪帮主手中的钱总数是: " + sum );
        }
    }
 
}

 

CONTINUE语句

  • 继续下一次循环
    • continue案例
      • 如果是双数,后面的代码不执行,直接进行下一次循环
public class HelloWorld {
    public static void main(String[] args) {
          
        //打印单数    
        for (int j = 0; j < 10; j++) {
            if(0==j%2) 
                continue; //如果是双数,后面的代码不执行,直接进行下一次循环
             
            System.out.println(j);
        }
    }
}

 

BREAK语句

  • 结束循环
  • 演示案例:
    • 直接结束当前for循环
public class HelloWorld {
    public static void main(String[] args) {
          
        //打印单数    
        for (int j = 0; j < 10; j++) {
            if(0==j%2) 
                break; //如果是双数,直接结束循环
             
            System.out.println(j);
        }
    }
}

 

如何结束外部FOR循环

  • 结束当前循环
    • break; 只能结束当前循环
  • 使用boolean变量结束外部循环
    • 借助boolean变量结束外部循环
    • 需要在内部循环中修改这个变量值
    • 每次内部循环结束后,都要在外部循环中判断,这个变量的值
public class HelloWorld {
    public static void main(String[] args) {
        boolean breakout = false; //是否终止外部循环的标记
        for (int i = 0; i < 10; i++) {
 
            for (int j = 0; j < 10; j++) {
                System.out.println(i + ":" + j);
                if (0 == j % 2) {
                    breakout = true; //终止外部循环的标记设置为true
                    break;
                }
            }
            if (breakout) //判断是否终止外部循环
                break;
        }
 
    }
}

 

  • 使用标签结束外部循环
    • 外部循环的前一行,加上标签 
    • 在break的时候使用该标签 
    • 即能达到结束外部循环的效果
public class HelloWorld {
    public static void main(String[] args) {
          
        //打印单数    
        outloop: //outloop这个标示是可以自定义的比如outloop1,ol2,out5
        for (int i = 0; i < 10; i++) {
             
            for (int j = 0; j < 10; j++) {
                System.out.println(i+":"+j);
                if(0==j%2) 
                    break outloop; //如果是双数,结束外部循环
            }
             
        }
         
    }
}

 

  • 案例演示1:
    • 寻找某两个数相除,其结果 离黄金分割点 0.618最近
    • 分母和分子不能同时为偶数
    • 分母和分子 取值范围在[1-20]
public class HelloWorld {
    public static void main(String[] args) {
 
        // 寻找某两个数相除,其结果 离黄金分割点 0.618最近
        //
        // 分母和分子不能同时为偶数
        // 分母和分子 取值范围在[1-20]
        int range = 20; // 取值范围
        float breakPoint = 0.618f; // 黄金分割点
 
        float minDiff = 100; // 离黄金分割点的差值
        int answerFenzi = 0; // 找到的分子
        int answerFenmu = 0; // 找到的分母
        for (int fenzi = 1; fenzi <= range; fenzi++) {
            for (int fenmu = 1; fenmu <= range; fenmu++) {
                // 分母和分子不能同时为偶数
                if (0 == fenzi % 2 & 0 == fenmu % 2)
                    continue;
 
                // 取值
                float value = (float) fenzi / fenmu;
                // 取离黄金分割点的差值
                float diff = value - breakPoint;
                // 绝对值
                diff = diff < 0 ? 0 - diff : diff;
 
                // 找出最小的差值
                if (diff < minDiff) {
                    minDiff = diff;
                    answerFenzi = fenzi;
                    answerFenmu = fenmu;
                }
            }
        }
 
        System.out.println("离黄金分割点(" + breakPoint + ")最近的两个数相除是:" + answerFenzi + "/" + answerFenmu + "="
                + ((float) answerFenzi / answerFenmu));
 
    }
}

  • 案例演示2:
    • 水仙花数定义:
    • 1. 一定是3位数
    • 2. 每一位的立方,加起来恰好是这个数本身,比如153=1*1*1+5*5*5+3*3*3
    • 寻找所有的水仙花数
public class HelloWorld {
    public static void main(String[] args) {
 
        for (int i = 100; i < 1000; i++) {
 
            int baiwei = i / 100;
            int shiwei = i / 10 % 10;
            int gewei = i % 10;
            int cube = baiwei * baiwei * baiwei + shiwei * shiwei * shiwei + gewei * gewei * gewei;
            if (cube == i) {
                System.out.println("找到水仙花数:" + i);
            }
 
        }
 
    }
 
}

 

你可能感兴趣的:(Java学习之路)