java学习笔记5

bandao
2021-11-27 / 0 评论 / 77 阅读 / 正在检测是否收录...

程序流程控制

  1. 顺序结构
  2. 分支结构
  3. 循环结构

    输入Scanner

  4. 具体步骤

    1. 导包:import java.util.Scanner;
    2. Scanner的实例化:Scanner scan = new Scanner(System.in);
    3. 调用Scanner类的相关方法(next() / nextXxx()),来获取指定类型的变量
  5. java代码

    //1.导包:import java.util.Scanner;
    import java.util.Scanner;
    
    public class ScannerTest {
     public static void main(String[] args) {
         //2.Scanner的实例化
         Scanner scan = new Scanner(System.in);
    
         //3.调用Scanner类的相关方法
         System.out.println("请输入姓名:");
         String name = scan.next();
         System.out.println(name);
    
         System.out.println("请输入你的芳龄:");
         int age = scan.nextInt();
         System.out.println(age);
    
         System.out.println("请输入");
         double weight = scan.nextDouble();
         System.out.println(weight);
    
         System.out.println("你是否相中我了呢?(true/false)");
         boolean isLove = scan.nextBoolean();
         System.out.println(isLove);
    
         //对于char型的获取,Scanner没有提供相关的方法。只能获取一个字符串
         System.out.println("请输入你的性别:(男/女)");
         String gender = scan.next();
         char genderChar = gender.charAt(0);//获取索引为0位置上的字符
         System.out.println(genderChar);
     }
    }

    3. Tip:

    需要根据相应的方法,来输入指定类型的值。
    如果输入的数据类型与要求的类型不匹配时,会报异常:InputMisMatchException,导致程序终止。

1. 分支结构(if——else)

1. 三种结构

第一种:

if(条件表达式){
    执行表达式
}

第二种:二选一

if(条件表达式){
    执行表达式1
}else{
    执行表达式2
}

第三种:n选一

if(条件表达式){
    执行表达式1
}else if(条件表达式){
    执行表达式2
}else if(条件表达式){
    执行表达式3
}
...
else{
    执行表达式n
}

2. java代码

public class IfTest {
    public static void main(String[] args) {
        int heartBeats = 67;
        if(heartBeats < 60 || heartBeats > 100){
            System.out.println("需要进一步检查");
        }
        System.out.println("检查结束");

        int age = 23;
        if(age < 18){
            System.out.println("可以看动画片了");
        }else {
            System.out.println("可以看大动画片了");
        }

        if(age < 0){
            System.out.println("输入的数据非法");
        }else if(age < 18){
            System.out.println("青少年模式");
        }else if(age < 35){
            System.out.println("青壮年模式");
        }else if(age < 60){
            System.out.println("中年模式");
        }else if(age < 120){
            System.out.println("老年模式");
        }else if(age > 120){
            System.out.println("成仙模式");
        }
    }
}

3. Tip

  1. else 结构是可选的。
  2. 针对于条件表达式:

    1. 如果条件表达式之间没有交集的关系,判断和执行语句声明与在上面还是下面无关。
    2. 如果条件表达式之间有交集的关系,需要根据实际情况,考虑清楚应该将哪个结构声明在上面。
    3. 如果条件表达式之间有包含的关系,需要将范围小的声明在范围大的上面。否则,范围小的就不会执行了。
  3. if-else结构是可以相互嵌套的。
  4. if-else结构中的执行语句只有一行时,对应的{}可以省略的。但是,不建议大家省略。

    2. 分支结构(switch-case)

    1. 结构

    switch(表达式){
    case 常量1:
     执行语句1;
     //break;
    
    case 常量2:
     执行语句2;
     //break;
    
    ...
    
    default:
     执行语句n;
     //break;
    
    }

    2. java代码

    public class SwitchCaseTest {
     public static void main(String[] args) {
         String season = "summer";
         switch (season){
             case "spring":
                 System.out.println("春暖花开");
                 break;
             case "summer":
                 System.out.println("夏日炎炎");
                 break;
             case "autumn":
                 System.out.println("秋高气爽");
                 break;
             case "winter":
                 System.out.println("冬雪皑皑");
                 break;
             default:
                 System.out.println("季节输入有误");
                 break;
         }
     }
    }
    //从键盘分别输入年、月、日,判断这一天是当年的第几天
    import java.util.Scanner;
    
    public class SwitchCaseExer {
     public static void main(String[] args) {
         Scanner scan = new Scanner(System.in);
         System.out.println("请输入year:");
         int year = scan.nextInt();
         System.out.println("请输入month:");
         int month = scan.nextInt();
         System.out.println("请输入day:");
         int day = scan.nextInt();
         
         //定义一个变量来保存总天数
         int sumDays = 0;
         switch(month){
             case 12:
                 sumDays += 30;
             case 11:
                 sumDays += 31;
             case 10:
                 sumDays += 30;
             case 9:
                 sumDays += 31;
             case 8:
                 sumDays += 31;
             case 7:
                 sumDays += 30;
             case 6:
                 sumDays += 31;
             case 5:
                 sumDays += 30;
             case 4:
                 sumDays += 31;
             case 3:
                 if((year % 4  == 0 && year % 100 != 0) || year % 400 == 0){
                     sumDays += 29;
                 }else {
                     sumDays += 28;
                 }
             case 2:
                 sumDays += 31;
             case 1:
                 sumDays += day;
         }
         System.out.println(year + month + "月" + day + "日是当年的第" + sumDays + "天");
     }
    }

    3. Tip

  5. 根据switch中的值,依次匹配各个case中的常量。匹配成功后,则进入相应case中。当调用完执行语句以后,则仍然继续向下执行其他case结构中的执行语句,直到遇到break关键字或此switch-case结构末尾结束为止。
  6. break在switch-case结构中,表示遇到此关键字后,就跳出switch-case结构
  7. switch结构中的表达式,只能是如下的6种数据类型之一:
    byte 、short、char、int、枚举类型(JDK5.0新增)、String类型(JDK7.0新增)
  8. case 后面只能放常量,不能放范围。(case age > 18:)
  9. break关键字是可选的。
  10. default:相当于if-else结构中的else。default结构是可选的,而且位置是灵活的。
  11. 凡是可以使用switch-case的结构,都可以用if-else。反之,不成立。
  12. 我们写分支结构时,当发现既可以使用switch-case,(而且,switch中表达式的取值情况不太多),
    又可以使用if-else时,我们优先用switch-case。原因:switch-case执行效率稍高。

    3. 循环结构(for循环)

    1. 结构

    ① 初始化条件
    ② 循环条件  --->是boolean类型
    ③ 循环体
    ④ 迭代条件
    
    for(①;②;④){
     ③
    }
    
    执行过程:① - ② - ③ - ④ - ② - ③ - ④ - ... - ②

    2.java代码

    public class ForTest {
     public static void main(String[] args) {
         for (int i = 0; i < 5; i++){
             System.out.println(i + " hello world");
         }
    
         int num = 1;
         //abcbcbc
         for(System.out.print('a'); num <= 3; System.out.print('c'), num++){
             System.out.print('b');
         }
    
         System.out.println();
    
         //遍历100以内的偶数,输出所有偶数的和,输出偶数的个数
         int sum = 0;
         int count = 0;
         for (int i = 1; i <= 100; i++) {
             if(i % 2 == 0){
                 //System.out.println(i);
                 sum += i;
                 count++;
             }
         }
         System.out.println("总和为:" + sum);
         System.out.println("个数为:" + count);
     }
    }

    4. 循环结构(while循环)

    1. 结构

    ① 初始化条件
    ② 循环条件  --->是boolean类型
    ③ 循环体
    ④ 迭代条件
    
    ①
    while(②){
     ③;
     ④;
    }
    执行过程:① - ② - ③ - ④ - ② - ③ - ④ - ... - ②

    2. java代码

    public class WhileTest {
     public static void main(String[] args) {
         int i = 2;
         while (i <= 100){
             if(i % 2 == 0){
                 System.out.println(i);
    
             }
             i++;
         }
         //循环外,仍然有i
         System.out.println(i);//101
     }
    }

    3.Tip

  13. 写while循环记得要写迭代条件。一旦丢了,就可能导致死循环,我们要避免出现死循环。
  14. for循环和while循环是可以相互转换的!
    区别:for循环和while循环的初始化条件部分的作用范围不同。

    5. 循环结构(do while循环)

    1. 结构

    ① 初始化条件
    ② 循环条件  --->是boolean类型
    ③ 循环体
    ④ 迭代条件
    
    ①
    do{
     ③;
     ④;
    
    }while(②);
    
    执行过程:① - ③ - ④ - ② - ③ - ④ - ... - ②

    2. java代码

    public class DoWhileTest {
     public static void main(String[] args) {
         //遍历100以内的偶数,并计算所有偶数的和及偶数的个数
         int num = 1;
         int sum = 0;
         int count = 0;
         do {
             if(num % 2 == 0){
                 System.out.println(num);
                 sum += num;
                 count++;
             }
             num++;
         }while (num <= 100);
         System.out.println("总和为:" + sum);
         System.out.println("个数为:" + count);
    
         //do-while至少执行一次循环体
         int number1 = 10;
         while (number1 >10){
             System.out.println("while");
             number1--;
         }
    
         int number2 = 10;
         do {
             System.out.println("do_while");
             number2--;
         }while (number2 > 10);
     }
    }

    3. Tip

  15. do-while循环至少会执行一次循环体!
  16. 开发中,使用for和while更多一些。较少使用do-while

    6. 最简单“无限” 循环格式

    while(true) , for(;;),无限循环存在的原因是并不知道循环多少次,
    需要根据循环体内部某些条件,来控制循环的结束。

    //从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入为0时结束程序。
    
    import java.util.Scanner;
    
    public class ForWhileTest {
     public static void main(String[] args) {
         Scanner scanner = new Scanner(System.in);
    
         int positiveNumber = 0;     //正数的个数
         int negativeNumber = 0;     //负数的个数
    
    
         while (true){               //for (;;)
             int number = scanner.nextInt();
    
             if(number > 0){
                 positiveNumber++;
             }else if(number < 0){
                 negativeNumber++;
             }else {
                 break;
             }
         }
         System.out.println("正数: " + positiveNumber);
         System.out.println("负数:" + negativeNumber);
     }
    }

    结束方法

  17. 循环条件部分返回false
  18. 在循环体中,执行break
1

评论 (0)

取消