Java流程控制02:Scanner的进阶使用

  • 一道练习题

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    package com.xiwen.scanner;

    import javafx.beans.binding.DoubleExpression;

    import java.util.Scanner;

    public class Demo05 {
    public static void main(String[] args) {
    //我们可以输入多个数字,并且要求其总和与平均数,每输入一个数字用回车确认。
    //通过输入非数字来结束输入并输出执行结果;

    Scanner scanner = new Scanner(System.in);
    //和
    double sum = 0;
    //计算输入了多少个数字
    int m = 0;
    System.out.println("请希文输入一位数字");
    /////通过循环判断时候还有输入,并在里面对每一次进行求和和统计
    //while循环:会不停的走,除非你崩了或者结束了。
    while (scanner.hasNextDouble()){
    double x = scanner.nextDouble();
    m = m + 1;//m++
    sum = sum + x;//累加

    System.out.println("你输入了第"+m+"个数据, 然后当前结果sum="+sum);

    }
    System.out.println(m + "个数的和为" + sum);
    System.out.println(m + "个数的平均值为" + sum/m);


    scanner.close();
    }
    }

  • 总结自己的疑问

    1
    System.out.println("你输入了第"+m+"个数据, 然后当前结果sum="+sum);
    • 第一个:这里的’**+m+**‘是什么意思?

      看了好久没明白,结果自己过一会儿一看就是一个简单的字符串拼接。(demo7里有详细讲解字符串拼接的知识点。)

      一定要细心,把基础打牢!

Java流程控制03:顺序结构

  • Java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行

  • 顺序结构是最简单的算法结构

    image-20240530163147459
  • 语句和语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构。

Java流程控制04:选择结构⭐⭐⭐⭐⭐

  • if单选择结构

    • 我们很多时候需要去判断一个东西是否可行,然后我们才去执行,这样一个过程在程序中用if语句来表示。

    • 语法

      1
      2
      3
      4
      if(布尔表达式){
      //如果布尔表达式为true将执行的语句
      }

    笔记

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    package com.xiwen.struct;

    import java.util.Scanner;

    public class IfDemo01 {
    public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);

    System.out.println("请您输入内容");
    String s = scanner.nextLine();
    //equals:判断字符串是否相等
    //少去用==判断字符串
    if (s.equals("Hello")){
    System.out.println(s);
    }
    System.out.println("End");
    //上面这些解释:如果s字符串等于Hello,
    // 就输出s和End(也即Hello)。否则就输出End
    scanner.close();

    }
    }

  • if双选择结构

    • 示例:某公司要收购一个软件。成功就给支付100万,失败自己找人开发。这样的需求用一个if就不行了,我们需要有两个判断。需要一个双选择结构,因此就有了if-else结构。
    • 语法
    1
    2
    3
    4
    5
    if(布尔表达式){
    //如果布尔表达式的值为true
    }else{
    //如果布尔表达式的值为false
    }
    image-20240530183708854
    • 实现示例
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    package simon;

    import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;

    import java.util.Scanner;

    public class BuySoftWare {
    public static void main(String[] args) {
    //创建一个Scanner对象来获取用户输入
    Scanner scanner = new Scanner(System.in);

    //提示用户输入收购结果

    //第一种写法:
    System.out.println("请问收购成功了吗?请输入成功或失败:");
    String input = scanner.next();
    boolean b = input.equals("成功");
    //第一种写法:是我自己改进的。


    //第二种写法:
    System.out.println("请问收购成功了吗?请输入成功或失败:");
    boolean b = scanner.nextBoolean();
    //第二种写法:是老师教的。感觉有点生硬。

    //重点!根据收购结果进行判断
    if(b){
    System.out.println("收购成功了,让我们签合同支付100万吧!");


    }else{
    System.out.println("收购失败,自行开发!");

    }

    scanner.close();
    }
    }

  • if多选择结构

    • 我们发现刚才的代码不符合实际情况,真实情况还可能存在ABCD,存在区间多级判断。比如90-100就是A, 80-90就是B..等等,在生活中我们很多时候的选择也不只有两个,所以我们需要一个多选择结构来处理这类问题。

    • 语法:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      if(布尔表达式 1){
      //如果布尔表达式 1的值为true执行代码
      }else if(布尔表达式 2){
      //如果布尔表达式 2的值为true执行代码
      }else if(布尔表达式 3){
      //如果布尔表达式 3的值为true执行代码
      }else {
      //如果布尔表达式的值都不为true执行代码
      }
    • 示例

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      package com.xiwen.struct;

      import java.util.Scanner;

      public class IfDemo03 {
      public static void main(String[] args) {
      /*总结:
      1.一个if语句可以有零个或多个elif语句。
      2.else语句最多只能有一个,并且必须是最后一个条件分支。
      3.一旦其中一个else if语句检测为true,其他的else if以及else语句都将跳过执行。
      */


      //考试分数大于60就是及格,小于60份就不及格。
      Scanner scanner = new Scanner(System.in);
      System.out.println("请输入成绩:");
      int score = scanner.nextInt();
      if (score==100){
      System.out.println("恭喜你,获得了满分!");
      }else if (score<100 && score>=90){
      System.out.println("A级!");
      }else if (score<90 && score>=80){
      System.out.println("B级!");
      }else if (score<80 && score>=70){
      System.out.println("C级!");
      }else if (score<70 && score>=60){
      System.out.println("D级!");
      }else if (score<60 && score>=0){
      System.out.println("不及格! ");
      }else {
      System.out.println("成绩不合法!");
      }
      //写程序一定要严谨!



      scanner.close();
      }
      }

    总结:

    1.一个if语句可以有零个或多个else if语句。

    2. else语句最多只能有一个,并且必须是最后一个条件分支。

    3. 一旦其中一个else if语句检测为true,其他的else if以及else语句都将跳过执行。

  • 嵌套的if结构

    • 使用嵌套的 if…else语句是合法的。也就是说你可以在另一个if或者else if语句中使用if或者else if语句。你可以像if 语句一样嵌套else if…else。

    • 语法:

      1
      2
      3
      4
      5
      6
      7
      if(布尔表达式 1){
      //如果布尔表达式 1的值为true执行代码
      }else if(布尔表达式 2){
      //如果布尔表达式 2的值为true执行代码

      }
      }
    思考题

    我们需要寻找一个数,在1-100之间。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    package Eg;

    import java.util.Scanner;

    public class Eg04 {
    public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int low = 1;
    int high = 100;

    while (low <= high) {
    int guess = (low + high) / 2;
    System.out.println("你想到的数字是 " + guess + " 吗? (请输入'高', '低'或'对')");
    String response = scanner.nextLine();

    if (response.equals("对")) {
    System.out.println("找到了! 你想到的数字是: " + guess);
    break;
    } else if (response.equals("低")) {
    low = guess + 1;
    } else if (response.equals("高")) {
    high = guess - 1;
    }
    }

    scanner.close();
    }
    }


    二分法的思想。

Java流程控制04:switch选择结构

  • switch多选择结构

    • 多选择结构还有一个实现方式就是switch case语句。
    • switch case 语句判断一个变量与一系列值中某个值是否相等,每个值成为一个分支
    • switch 语句中的变量类型可以是:
      • byte、short、int、或者char
      • 从Java SE 7开始
      • switch 支持字符串String类型了
      • 同时case标签必须为字符串常量或字面量。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    switch(expression){
    case value :
    //语句
    break;//可选
    case value :
    //语句
    break;//可选
    //你可以有任意数量的case语句
    default://可选
    //语句

    }