Day07——用户交互Scanner、顺序结构、选择结构

Day07——用户交互Scanner、顺序结构、选择结构

用户交互Scanner

通过 Scanner 类来获取用户的输入。

创建 Scanner 对象的基本语法:

import java.util.Scanner;
//导入 java.util 包下的 Scanner类

Scanner s = new Scanner(System.in);
//创建一个对象s,来获取用户输入

通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要使用 hasNext() 与 hasNextLine() 判断是否还有输入的数据。

例1:hasNext()、next()方法

import java.util.Scanner;     //导入 java.util 包下的 Scanner类
public class Scanner{
    
    
    public static void main(String[] args){
    
    
        Scanner scanner = new Scanner(System.in);
        //创建一个对象scanner,来获取用户输入
        if(scanner.hasNext()){
    
       //用hasNext()判断是否还有输入
            String str = scanner.next();
            //使用next()方法获取用户输入,并储存到字符串str
            System.out.println(str);
        }
        scanner.close();//IO流的类会一直占用资源,需要手动关闭
    }
}//输入: Hello World ; 输出: Hello

例2:hasNextLine()、nextLine()方法

//例1第6~10行:
if(scanner.hasNextLine()){
    
    
    //用hasNextLine()判断是否还有输入
    String str = scanner.nextLine();
    //使用nextLine()方法获取用户输入,并储存到字符串str
    System.out.println(str);
}//输入: Hello World ; 输出: Hello World

两次输入相同,但输出却不同:

  • next()方法必须有输入,遇到空格自动结束

  • nextLine()方法以Enter为结束,因此可以输入空格,也可以没有任何输入

  • 若要判断是否还有int或float等其他类型数据输入,则用hasNextInt()、nextInt()、hasNextFloat()、nextFloat()等。

【例3】输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果:

import java.util.Scanner;
public class Num{
    
    
    public static void main(String[] args) {
    
    
        double num = 0;
        int i = 0;
        Scanner s = new Scanner(System.in);
        while(s.hasNextDouble()){
    
    
            double digtal = s.nextDouble();
            num += digtal;
            i++;
        }
        System.out.println(i +"个数的和为:" + num);
        System.out.println(i +"个数的平均数为:" + num / i);
        s.close();
    }
}//输入10	20	30	40	a	
//输出4个数的和为:100.0	4个数的平均数为:25.0

顺序结构

顺序结构是最简单的算法结构,是Java的基本结构。

语句与语句之间、按从上到下的顺序进行。

选择结构

if 选择结构

  1. if 单选择结构:

    if(布尔表达式){
          
          
        语句1;
    }//布尔表达式为true时,执行语句1; 否则不执行
    
  2. if 双选择结构:

    if(布尔表达式){
          
          
        语句1;
    }else{
          
          
        语句2;
    }//布尔表达式为true时,执行语句1; 否则执行语句2。
    
  3. if 多选择结构:

    if(布尔表达式1){
          
          
        语句1;
    }else if(布尔表达式2){
          
          
        语句2;
    }else if(布尔表达式3){
          
          
        语句3;
    }else{
          
          
        语句4;
    }//布尔表达式1为true时,执行语句1; 否则判断布尔表达式2,若为true,执行语句2;否则判断布尔表达式3,若为true,执行语句3;否则执行语句4。
    
  • 与嵌套结构区别

    执行语句1的条件是,布尔表达式1为true;

    执行语句2的条件是,布尔表达式1false,2为true;

    执行语句3的条件是,布尔表达式1、2均为false,3为true;

    执行语句4的条件是,布尔表达式1、2、3均为false。

    【例】考试成绩100满分,80以上优秀,60到80良,60以下不及格。

    import java.util.Scanner;
    public class Demo{
          
          
        public static void main(String[] args){
          
          
           Scanner s =  new Scanner(System.in);
            int score = s.nextInt();
            if(score == 100){
          
          
                System.out.println("恭喜满分!");
            }else if(score >= 80 && score < 100){
          
          
                System.out.println("优秀!");
            }else if(score >= 60 && score < 80){
          
          
                System.out.println("表现良好");
            }else if(score >= 0 && score < 60){
          
          
                System.out.println("不及格,仍需努力。");
            }else{
          
          
                System.out.println("成绩格式错误!");
            }
            s.close();
        }
    }
    
  1. if 嵌套结构:

    if(布尔表达式1){
          
          
        if(布尔表达式2){
          
          
            语句1;
        }else{
          
          
            语句2;
        }
    }else{
          
          
        语句3;
    }
    
  • 与if 多选择结构区别

    执行语句1的条件是,布尔表达式1、2均为true;

    执行语句2的条件是,布尔表达式1为true,2为false;

    执行语句3的条件是,布尔表达式1为false。

switch 多选择结构

多选择结构还有一个实现方式就是switch case 语句。

switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。

switch(expression){
    
    
	case value 1 :
	//语句
	break; //可有可无
	case value 2 :
	//语句
	break; //可有可无
	...
    ...
	default : //可有可无
	//语句
}
  • switch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch 支持 字符串 String 类型了。

  • switch 语句可以拥有多个 case 语句。每个 case 后面跟一个要比较的值和冒号。

  • case 语句中的值的数据类型必须与变量的数据类型相同。

  • 当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句**【case穿透】**,否则程序会继续执行下一条 case 语句,直到出现 break 语句。

  • switch 语句可以包含一个 default 分支,一般是最后一个分支。default 在 没有 case 语句的值和变量值相匹配 的时候执行。default 分支不需要 break 语句。

例1:【case穿透】

public static void main(String args[]){
    
    
	int i = 1;
	switch(i){
    
    
		case 0:
			System.out.println("0");
		case 1:
			System.out.println("1");
		case 2:
			System.out.println("2");
		case 3:
			System.out.println("3");
			break;
		default:
			System.out.println("default");
	}
}//输出1	 2	 3。【case穿透】	

例2:【JDK7增加了字符串(String)表达式】

public static void main(String[] args) {
    
    
	String name = "Crown";
	switch (name) {
    
         //JDK7的新特性,表达式的内容可以是字符串。
		case "明天也有晚霞嘛":
			System.out.println("输入为:明天也有晚霞嘛");
			break;
		case "Crown":
			System.out.println("输入为:Crown");
			break;
		default:
			System.out.println("无法匹配");
			break;
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_46330563/article/details/114859686
今日推荐