JavaSE05-用户交互Scanner


一、Scanner

Scanner是Java中的一个类(java.util.Scanner),它被用来获取用户输入

基本语法是:

Scanner scanner = new Scanner(System.in);
  • 通过Scanner类的next()nextLine()方法获取输入的字符串。
  • 读取前,一般使用hasNext()hasNextLine()判断是否还有输入的数据。
  1. 使用next方式接收字符串。

    import java.util.Scanner;
    
    public class Scanner01 {
        public static void main(String[] args) {
            //创建一个扫描器对象,用于接收键盘输入
            Scanner scanner = new Scanner(System.in);
            System.out.println("使用next接收输入:");
    
            //判断是否还有输入
            if (scanner.hasNext()){
                String str = scanner.next();
                System.out.println("输出:"+str);
            }
    
            scanner.close();
    
        }
    }
    
  2. 使用nextLine方式接收字符串。

    import java.util.Scanner;
    
    public class Scanner02 {
    
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.println("使用nextLine接收输入:");
    
            if (scanner.hasNextLine()){
    
                String str = scanner.nextLine();
                System.out.println("输出:"+str);
            }
    
            scanner.close();
        }
    }
    

我们对比一下这两种方式的结果:

除了字符串,Scanner类也支持其他的数据类型,比如整型和浮点型等。

import java.util.Scanner;

public class Scanner03 {

    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();
    }
}

二、小练习

练习:计算多个输入(数字)的和及平均数,当输入为非数字时退出。

import java.util.Scanner;

public class Scanner04 {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        Double x = 0.0;
        Double sum = 0.0;

        int n = 0;

        System.out.println("计算多个数的和及均值");

        while (scanner.hasNextDouble()){
            x = scanner.nextDouble();
            n+=1;
            sum = sum + x;
        }

        System.out.println(n+"个数的和为:"+sum);
        System.out.println(n+"个数的均值为:"+ (sum/n));

        scanner.close();
    }
}