JavaSE——流程控制(接收输入Scanner、分支结构(if与switch)、循环结构(while、do-while与for))

第3节 流程控制

一、接收用户输入

使用Scanner类来接收用户的输入。

新建一个Scanner对象:Scanner input = new Scanner(System.in);

input可以接收各种数据类型的输入:比如nextIntnextByte等,但是这样不太安全,因为如果输入了别的类型的数据,代码就会直接报错;

所以比较常用的是next()nextLine(),它们都返回的是String类型;

  • 其中next会从第一个不为空格的字符开始接收,然后遇到空格或换行符结束接收;

  • nextLine会接收一整行内容,直到遇到换行符结束接收;

  • 注意不要同时使用nextnextLine,会得不到想要的结果。

import java.util.Scanner;

public class input {
     
    public static void main(String[] args) {
     
        Scanner input = new Scanner(System.in);
        System.out.println("请输入next接收的内容:");
        String str1 = input.next();
        System.out.println(str1);
    }
}

结果如下:

请输入next接收的内容:
   24dg  78tyu
24dg
import java.util.Scanner;

public class input {
     
    public static void main(String[] args) {
     
        Scanner input = new Scanner(System.in);
        System.out.println("请输入nextLine接收的内容:");
        String str2 = input.nextLine();
        System.out.println(str2);
    }
}

结果如下:

请输入nextLine接收的内容:
  ud78  56dgy__@#$  !~
  ud78  56dgy__@#$  !~

二、执行结构

   1996 年, 计算机科学家 Bohm 和 Jacopini 证明了: 任何简单或复杂的算法都可以由顺序结构、 分支结构和循环结构这三种基本结构组合而成。

   它们的共同点是都包含一个入口和一个出口, 它们的每个代码都有机会被执行, 不会出现死循环。
  • 顺序结构 :一种基本的控制结构,按照语句出现的顺序执行操作;

  • 分支结构 :又称为选择结构,根据条件成立与否来执行操作;

  • 循环结构 :一种重复结构,如果条件成立,它会重复执行某一循环体,直到出现不满足的条件为止。

三、分支结构

3.1 if条件语句

if 条件结构是根据条件判断之后再做处理

  • if(条件语句){…}

  • if (条件语句){…}else{…}

  • if (条件语句){…}else if(条件语句){…}

  • if (条件语句){…}else if(条件语句){…}else{…}

例子: 用户输入学生成绩, 判断成绩是否及格, 判断条件为 优良: > 90、 良好: 81-90、 中: 60-80、 不及格: <60

import java.util.Scanner;

public class ifelse {
     
    public static void main(String[] args) {
     
        System.out.println("请输入考试成绩:");
        Scanner input = new Scanner(System.in);
        int s = input.nextInt();
        if(s >= 120 || s < 0) {
     
            System.out.println("输入成绩有误!");
        }else if(s >= 90) {
     
            System.out.println("成绩优秀!");
        }else if(s >= 80) {
     
            System.out.println("成绩良好!");
        }else if(s >= 70) {
     
            System.out.println("成绩合格!");
        }else {
     
            System.out.println("成绩不合格!");
        }
    }
}

3.2 switch语句

switch(表达式){
       

case 取值 1: 语句块 1;break;  

case 取值 n: 语句块 n;break;  

default: 语句块 n+1;break;  

}

switch 语句有关规则

  • 表达式的返回值必须是下述几种类型之一: int, byte, char, short,String;

  • case 子句中的取值必须是常量, 且所有 case 子句中的取值应是不同的;

  • default 子句是可选的;

  • break 语句用来在执行完一个 case 分支后使程序跳出 switch 语句块; 如果 case 后面没有写 break 则直接往下面执行!

  • case 后面的执行体可写{ }也可以不写{ }

例题: 多分支月份输出天数(充分利用语句特性)

import java.util.Scanner;

public class switchcase {
     
    public static void main(String[] args) {
     
        System.out.println("请输入一个月份(1-12):");
        Scanner input = new Scanner(System.in);
        String text = input.next();
        switch (text) {
     
            case "1":
            case "2":
            case "3":
                System.out.println("春季");
                break;
            case "4":
            case "5":
            case "6":
                System.out.println("夏季");
                break;
            case "7":
            case "8":
            case "9":
                System.out.println("秋季");
                break;
            case "10":
            case "11":
            case "12":
                System.out.println("冬季");
                break;
            default:
                System.out.println("输入月份有误!");
                break;
        }
    }
}

四、循环结构

**循环语句功能 **

    在循环条件满足的情况下, 反复执行特定代码

**循环语句分类 **

  • for 循环

  • while 循环

  • do/while 循环

4.1 while循环语句

符合条件, 循环继续执行; 否则, 循环退出

特点: 先判断, 再执行

语法:

while(条件表达式){
       

//语句块;  

}

使用 while 循环的步骤
1、 分析循环条件和循环操作
2、 套用 while 语法写出代码
3、 检查循环是否能够退出

实现示例:

录入班级人数和学员成绩, 计算班级学员的平均成绩

import java.util.Scanner;

public class whiledemo {
     
    public static void main(String[] args) {
     
        Scanner input = new Scanner(System.in);
        System.out.println("请输入班级总人数");
        //使用变量studentNum记录班级总人数
        int studentNum = input.nextInt();
        //用于记录循环的次数,以及控制循环何时结束
        int i = 0;
        //定义变量sum,用于统计总分数
        int sum = 0;
        while(i < studentNum) {
     
            i++;
            System.out.println("请输入第"+i+"个学生的成绩:");
            int s = input.nextInt();
            sum += s;
        }
        System.out.println("学生的平均成绩为:"+sum/studentNum);
    }
}

4.2 do-while循环语句

先执行一遍循环操作, 符合条件, 循环继续执行; 否则, 循环退出

特点: 先执行, 再判断

语法:

do {
       

//循环操作  

}while ( 条件表达式 );

**while 循环和 do-while 循环的区别? **

  • while:先判断条件, 如果条件满足, 再执行循环操作

  • do while:先执行一遍循环操作, 然后再判读条件, 如果条件满足, 继续执行循环操作。

4.3 for循环语句

语法:

for(初始化参数; 判断条件; 更新循环变量){
       

//循环体;  

}

4.4 break与continue

break是用于终止本轮所有次循环,即不执行本次循环中break后面的语句,直接退出循环;

continue是用于终止本轮本次循环,即本次循环中continue后面的代码不执行,进行下一次循环的入口判断。

4.5 如何退出多重循环

在要退出到的地方起个别名,然后break XXX;

public class exit_many_xunhuan {
     
    public static void main(String[] args) {
     
        haha:for(int i=0;i<10;i++) {
     
            for(int j=0;j<10;j++) {
     
                System.out.println("i="+i+" , j="+j);
                if (i==5 && j==5) {
     
                    break haha;
                }
            }
        }
    }
}

补充:如何判断用户输入类型

import java.util.Scanner;

public class panduan_input_leixing {
     
    public static void main(String[] args) {
     
        System.out.println("请输入一个数字:");
        Scanner input = new Scanner(System.in);
        //在接收输入之前判断输入的类型是否为int
        if(input.hasNextInt()) {
     
            int num = input.nextInt();
            System.out.println("你输入的是:"+num);
        }else {
     
            System.out.println("你输入的类型不是int");
        }
    }
}

你可能感兴趣的:(Java,java)