【狂神说Java】学习笔记9:Java流程控制之Scanner应用

[01] 用户交互Scanner

[02] 顺序结构

[03] 选择结构

[04] 循环结构

[05] break & continue

[06] 练习题讲解


image

[01] 用户交互Scanner

Scanner对象

用来获取用户的输入,采集输入信息。

通过next() 和 nextLine() 获取用户输入的字符串;

通过hasNext() 和 hasNextLine() 判断是否还有输入的数据。

image

next() 和 nextLine()

next() 不能得到带有空格的字符串,返回结果是空格之前的输入内容。
nextLine() 可以获取空白,返回结果是回车键之前的输入结果。

image

案例分析

案例1:Scanner扫描用户输入后,并next输出一段文字

package scanner;

import java.util.Scanner;

public class Demo01 {
    public static void main(String[] args) {
        // 案例:Scanner扫描用户输入后,并next输出一段文字
        // 创建一个扫描对象,用来接收用户的输入内容
        Scanner scanner = new Scanner(System.in);
        System.out.println("使用next方式来接收:");

        // 判断用户有没有输入字符串
        if (scanner.hasNext()){
            // 使用next方式接收(只接收一段话,到空格或转行前为止。)
            String str=scanner.next();
            System.out.println("接收到的输出内容为:" + str);
        }
        // 凡是I/O流的类如果不关闭的话会一直占用资源,养成用完就关的习惯。
        scanner.close();
    }
}
--------------	控制台输出结果	--------------
使用next方式来接收:
hello world
接收到的输出内容为:hello

案例2:Scanner扫描用户输入后,并nextLine输出一整行话

package scanner;

import java.util.Scanner;

public class Demo02 {
    public static void main(String[] args) {
        // 案例2:Scanner扫描用户输入后,并nextLine输出一整行话
        Scanner scanner = new Scanner(System.in);
        System.out.println("使用nextLine方式来接收一行:");

        // 判断用户有没有输入字符串
        if (scanner.hasNextLine()){
            // 使用nextLine方式接收一整行话
            String str=scanner.nextLine();
            System.out.println("接收到的输出内容为:" + str);
        }
        // 凡是I/O流的类如果不关闭的话会一直占用资源,养成用完就关的习惯。
        scanner.close();
    }
}
--------------	控制台输出结果	--------------
使用nextLine方式来接收一行:
hello world
接收到的输出内容为:hello world

总结:整行扫描用户输入的简单写法

	// 整行扫描用户输入的简单写法
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入数据:");
        String str =scanner.nextLine();
        System.out.println("输出的内容为:" + str);
        scanner.close();

案例3:检测用户输入整数和小数

package scanner;

import java.util.Scanner;

public class Demo04 {
    public static void main(String[] args) {
        //检测用户输入整数和小数
        Scanner scanner = new Scanner(System.in);
        int i =0;
        float f=0.0f;

        //判断输入的是不是整数
        System.out.println("请输入整数:");

        if (scanner.hasNextInt()){
            i = scanner.nextInt();
            System.out.println("你输入的整数是:" + i);
        }else{
            System.out.println("你输入的不是整数!");
        }

        //判断输入的是不是小数
        System.out.println("请输入小数:");

        if (scanner.hasNextFloat()){
            f = scanner.nextFloat();
            System.out.println("你输入的小数是:" + f);
        }else{
            System.out.println("你输入的不是小数!");
        }

        scanner.close();
        System.out.print("程序结束");
    }
}
--------------	控制台输出结果	--------------
请输入整数:
1231231.4
你输入的不是整数!
请输入小数:
你输入的小数是:1231231.4
程序结束

案例4:Scanner进阶应用

要求:可输入多个数字求总和和平均数,每输入一个数字用空格隔开,通过输入非数字来结束输入,并输出结果。

package scanner;

import java.util.Scanner;

public class Demo05 {
    public static void main(String[] args) {
        /*  案例:Scanner进阶应用
            要求:可输入多个数字求总和和平均数,每输入一个数字用空格隔开,通过输入非数字来结束输入,并输出结果。
            写法:1.开写Scanner,2.定义总和与输入数量,
                 3.while语句配合判断是否还有输入并求和求平均,4.输出总和和平均数的结果
         */
        Scanner scanner = new Scanner(System.in);

        double sum=0;   // 定义数字总和
        int m=0;        // 输入了多少个数字
        System.out.println("请输入多个数字,点击enter/space输入下一个,输入非数字结束操作:");

        // 通过循环判断是否还有输入,并在里面对每一次进行求和并统计
        while(scanner.hasNextDouble()){
            double x = scanner.nextDouble();
            m = m + 1;      // 等于 m++
            sum = sum + x;  // 等于sum += x
            System.out.println("你输入了第"+ m +"个数据,当前的结果为"+sum);
        }
        System.out.println(m + "个数的和为:" + sum);
        System.out.println(m + "个数的平均值为:" + (sum/m) );

        scanner.close();

    }
}
posted @ 2021-05-01 00:43  金城麻吉  阅读(125)  评论(0编辑  收藏  举报