java条件判断和循环

发布时间 2023-03-30 23:10:31作者: fuju

一 流程控制

  • 三大流程控制语句: 顺序, 选择, 循环

二 选择结构

在多重if-else中, 只有一个语句不加括号时: else匹配最近的, 就近原则

 

  • if结构, if-else结构

if(条件)
    语句1;
else
    语句二
    
if(条件){
    语句1;
}else{
    语句2;
}

 

  • 多重if

package com.imooc.flow;
​
import java.util.Scanner;
​
public class ScoreAssess {
​
    public static void main(String[] args) {
        /*
         * 成绩大于等于90分,输出“优” 成绩大于等于80分且小于90分,输出“良” 成绩大于等于60分小于80分,输出“中” 成绩小于60分,输出“不及格”
         */
        System.out.println("请输入成绩: ");
        Scanner sc = new Scanner(System.in);
        int score = sc.nextInt();
        if (score >= 90) {
            System.out.println("优");
        } else if (score >= 80) {
            // 这里score>=80 相当于score>=80&score<90
            System.out.println("良");
        } else if (score >= 60) {
            System.out.println("中");
        } else {
            System.out.println("不及格");
        }
    }
​
}

 

  • 嵌套if

package com.imooc.flow;
​
import java.util.Scanner;
​
public class IntCompare {
​
    public static void main(String[] args) {
        // 简单案例, 判断两个数的大小
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个数: ");
        int x = sc.nextInt();
        System.out.println("请再输入一个数: ");
        int y = sc.nextInt();
        // 判断两个数的大小
        if (x != y) {
            if (x > y) {
                System.out.println(x + "大于" + y);
            } else {
                System.out.println(x + "小于" + y);
            }
        } else {
            System.out.println(x + "和" + y + "相等");
        }
    }
​
}

 

  • switch结构

在switch中 break和default是可以省略的
switch对应的括号是(byte,short,int,char,String)
long类型和浮点型是不行的

 

switch(表达式){
case:常量表达式1:
    语句1;break;
case:常量表达式2:
    语句1;break;
default:
    语句3;
}
package com.imooc.flow;
​
import java.util.Scanner;
​
public class WeekDemo2 {
​
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入英文星期几: ");
        String str = sc.next().toUpperCase(); // toUpperCase()方法是转大写 
        switch (str) {
        case "MONDEY":
            System.out.println("星期一");
            break;
        case "TUESDAY":
            System.out.println("星期二");
            break;
        case "WEDNESDAY":
            System.out.println("星期三");
            break;
        case "THURSDAY":
            System.out.println("星期四");
            break;
        case "FRIDAY":
            System.out.println("星期五");
            break;
        case "SATARDAY":
            System.out.println("星期六");
            break;
        case "SUNDAY":
            System.out.println("星期天");
            break;
        default:
            System.out.println("输入错误~");
        }
    }
​
}
​
  • 三while循环(循环次数不固定使用)

        // 循环输出26个英文字母, 分两行输出
        char ch = 'a';
        int count = 1;
        while (ch <= 'z') {
            System.out.print(ch + " ");
            if (count == 13) {
                System.out.println();
            }
            ch++;
            count++;
        }
  • 四do-while(至少循环一次)

        System.out.println("请输入数字: ");
//      int number = 6; //设定猜中的数字
        // Math.random()是随机数, 默认是[0,1)
        int number = (int) (Math.random()*10+1); 
        int guess;
        do {
            Scanner sc = new Scanner(System.in);
            guess = sc.nextInt();
            if(guess>number) {
                System.out.println("太大");
            }else if(guess<number) {
                System.out.println("太小");
            }
                
        }while(guess!=number);
        System.out.println("恭喜猜对了: "+guess);
    }
  • 五for循环(循环次数固定使用)

// 2 百元百鸡 小鸡0.5元,公鸡2元,母鸡3元,用100元买一百只鸡。列举出所有结果。
        int chicken = 100;
        double money = 100;
        for (int x = 0; x < chicken / 2; x++) { // 公鸡的数量
            for (int y = 0; y < chicken / 3; y++) { // 母鸡的数量
                int z = chicken - x - y;
                if (z >= 0 && ((z * 0.5) + (x * 2) + (y * 3)) == 100) {
                    System.out.println("小鸡=" + z + "只" + ",公鸡=" + x + "只" + ",母鸡=" + y);
                }
            }
        }
// 编写一个程序,计算任一输入的各位数字之和;(如输入12345,计算1+2+3+4+5)      
        System.out.println("请输入一个整数: ");
        Scanner sc = new Scanner(System.in);
        int count = sc.nextInt();
        int sum = 0;
        while(count>0) {
            int dis = count%10; // 获取最后一位
            sum+=dis;
            count/=10; // 移除最后一位
        }
        System.out.println("count的和是: "+sum);
//      4 输出所有的水仙花数,所谓水仙花数是指一个3位数,其各个位上数字立方和等于其本身。 
//      例如: 153 = 1*1*1 + 3*3*3 + 5*5*5 
            for(int i=100; i<1000;i++) {
            int bai = (i%10);
            int shi = (i/10)%10;
            int ge = i/100;
            int bais = (int) Math.pow(bai,3); // 获取某个数的三次方
            int shis = (int) Math.pow(shi,3);
            int ges = (int) Math.pow(ge,3);
            if(i==(bais+shis+ges)) {
                System.out.println("所有的水仙花数: "+i);
            }
        }
        
        for (int i = 100; i < 1000; i++) {
            int digit1 = i / 100; // 获取百位数
            int digit2 = (i / 10) % 10; // 获取十位数
            int digit3 = i % 10; // 获取个位数
            int cubeSum = digit1 * digit1 * digit1 + digit2 * digit2 * digit2 + digit3 * digit3 * digit3;
            if (cubeSum == i) {
                System.out.println(i);
            }
        }
        // 输出星号组成的梯形
        for(int i = 3; i<=11; i++,i++){
            for(int j=11; j>=i; j--){
                System.out.print(" ");
            }
            for(int k=1; k<=i;k++){
                System.out.print("*");
                System.out.print(" ");
            }
            System.out.println();
        }

 

  • 五 break和continue使用

break结束最近的switch或循环
​
continue结束本轮循环,进入下一轮
​
return 语句,结束所在的方法
​
  • 六 调试

debug模式运行代码:idea
​
•   单步运行(step over) 
​
•   单步进入(step into)  遇到方法,进入方法单行执行
​
•   单步退出 (step out)跳出方法执行