Scanner类与Scanner进阶

Scanner类

之前我们学的基本语法中我们并没有实现程序和人的交互,但是Java给我们提供了这样一个工具类,我们可以获取用户的输入。java.util.Scanner是Java5的新特征,我们可以通过Scanner类来获取用户的输入

  • 基本语法:
Scanner scanner = new Scanner(System.in);

通过Scanner类的next()nextLine()方法获取输入的字符串,

在读取前我们一般需要使用hasNext()hasNextLine()判断是否还有输入的数据。


next():

  1. 一定要读取到有效字符后才可以结束输入。
  2. 对输入有效字符之前遇到的空白,next()方法会自动将其去掉。
  3. 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
  4. next()不能得到带有空格的字符串。
	//创建一个扫描器对象,用于接收键盘数据
        Scanner scanner = new Scanner(System.in);
        System.out.println("使用next()方式接收:");
        //判断用户是否有输入
        if (scanner.hasNext()){
            //使用next()方法接收
            String str = scanner.next();  //启动next方法会等待用户输入
            System.out.println("输出内容是:"+str);
        }
        scanner.close();  //IO流的类不关闭会一直占用资源,要养成用完关闭的习惯
//启动程序并输入:Hello world!
//输出结果为:
Hello

nextLine():

  1. 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符。
  2. 可以获得空白。
	Scanner scanner = new Scanner(System.in);
        System.out.println("使用nextLine()输入:");
        if (scanner.hasNextLine()){
            String str = scanner.nextLine();
            System.out.println("输入内容是:"+str);
        }
        scanner.close();
//启动程序并输入:Hello world!
//输出结果为:
Hello world!

其他next()方法:

还有nextInt()、nextDouble()、nextFloat()等。


Scanner进阶:

	//输入多个数字,并求其总和与平均数,每输入一个数字用回车键确认,输入非数字结束输入并执行结果。
        Scanner scanner = new Scanner(System.in);
        double sum = 0.0; //和
        int i = 0;  //输入的总数

        //通过循环判断是否还有输入的数,并进行求和统计
        System.out.println("输入数字开始运算,输入字母结束运算:");
        while(scanner.hasNextDouble()) {
            double d = scanner.nextDouble();
            i++;
            sum += d;
            System.out.println("已输入"+i+"个数据,当前和为:"+sum);
        }
        System.out.println("sum:\t"+sum);
        System.out.println("average:\t"+(sum/i));

        scanner.close();
posted @ 2021-03-09 14:43  QQMail  阅读(112)  评论(0)    收藏  举报