JavaSE从零学起6. Scanner类:创建Scanner对象的方法 基本使用模板 next()和nextLine() 的区别

Scanner类

创建Scanner对象的方法

Scanner scanner = new Scanner(System.in);

基本使用模板

使用Scanner类时需要在代码最上方导入java.util.Scanner

import java.util.Scanner;

public class Demo03 {
    public static void main(String[] args) {
        //基本使用模板
        Scanner scanner = new Scanner(System.in);
        System.out.println("Please enter:");

        String str = scanner.nextLine();
        System.out.println(str);

        scanner.close();
    }
}

next()和nextLine() 的区别

接下来我们演示一个最简单的数据输入,并通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串.

//使用Scanner类时需要在代码最上方导入java.util.Scanner;
import java.util.*;/

public class Demo01 {
    public static void main(String[] args) {
        //从键盘接收数据
        Scanner scanner = new Scanner(System.in);
        System.out.println("使用Next方式接收:");

        //判断用户有没有输入
        if(scanner.hasNext()){
            //使用Next方式接收
            String str = scanner.next();
            //程序会等待用户输入完毕
            System.out.println("输出的内容为:" + str);
        }
        //凡是属于IO流的类如果不关闭会一直占用资源,要养成好习惯用完就关闭
        scanner.close();
    }
}

输出结果:
使用Next方式接收:
dada com
输出的内容为:dada 
//可见dada后的空格和com并没有输出


import java.util.*;

public class Demo02 {
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        System.out.println("使用NextLine方式接收");

        //判断用户有没有输入
        if(scanner.hasNextLine()){
            //使用NextLine方式接收
            String str = scanner.nextLine();
            //程序会等待用户输入完毕
            System.out.println("输出的内容为:" + str);
        }
        scanner.close();
    }
}
输出结果:
使用NextLine方式接收
dada com
输出的内容为:dada com
//可见dada后的空格和com都有输出

next():
1.一定要读取到有效字符后才可以结束输入。
2.对输入有效字符之前遇到的空白, next()方法会自动将其去掉。
3.只有输入有效字符之后才能将其后面输入的空白作为分隔符或结束符。
4.总之,next()不能得到带有空格的字符串
" Hello World"中"Hello"之前的空格无效。
“Hello”与“World”之间的空格作为分隔符。“World”不会输出。

nextLine():
1.以Enter为结束符,也就是说nextLine()方法返回的内容是输入之后 回车之前的所有字符。
2.可以获得空白

结合hasNext**()使用

使用Scanner时一般会结合hasNext**()判断控制台是否有符合要求的输入。

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("请输入一个数");
        
        //判断用户有没有输入Int型数据
        if (scanner.hasNextInt()){ 
            i = scanner.nextInt();
            System.out.println("输入的是整数"+ i);
        }
        else {
            System.out.println("输入的不是整数!");
        }
        System.out.println("请再输入一个数");

        //判断用户有没有输入Float型数据
        if (scanner.hasNextFloat()){ 
            f = scanner.nextFloat();
            System.out.println("输入的是浮点数"+ f);
        }
        else {
            System.out.println("输入的不是浮点数!");
        }
        scanner.close();
    }

}
输出结果1:
请输入一个数
1
输入的是整数1
请再输入一个数
0.1
输入的是浮点数0.1

输出结果2:
请输入一个数
hk
输入的不是整数!
请再输入一个数
输入的不是浮点数!

一个Scanner常见Demo

我们可以输入多个数字。求其总和和平均数,每次输入一个数字用回车确认,并通过输入非数字来结束输入并输出执行结果。

import java.util.Scanner;

/**
 * @ClassName Demo05
 * @Description 我们可以输入多个数字。求其总和和平均数,每次输入一个数字用回车确认,并通过输入非数字来结束输入并输出执行结果。
 * @Author 
 * @Date 2021/5/28 21:01
 * @Version 1.0
 **/
public class Demo05 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入:");
        //因为平均数可能是浮点数,所以用double
        double sum = 0;
        //个数
        int count = 0;

        /*通过循环判断是否还有输入,并且在每一次循环中进行求和与求均
        用scanner.hasNextDouble()方法判断是否是浮点数,一旦不是则不满足循环条件*/
       while(scanner.hasNextDouble()){
            double a = scanner.nextDouble();
            count++;
            sum = sum + a;
           System.out.println("你输入了第"+count+"个数据"+"当前结果是:sum = " +sum);
        }
        
        //输出执行结果
        System.out.println("输入的数字个数" + count);
        System.out.println("输入的数字的和" + sum);
        System.out.println("输入的数字的平均数" + sum/count);


        scanner.close();
    }

}

输出结果:
请输入:
1 2 3 4
你输入了第1个数据当前结果是:sum = 1.0
你输入了第2个数据当前结果是:sum = 3.0
你输入了第3个数据当前结果是:sum = 6.0
你输入了第4个数据当前结果是:sum = 10.0
1 2 3 4
你输入了第5个数据当前结果是:sum = 11.0
你输入了第6个数据当前结果是:sum = 13.0
你输入了第7个数据当前结果是:sum = 16.0
你输入了第8个数据当前结果是:sum = 20.0
f //输入非数字来结束输入并输出执行结果。
输入的数字个数8
输入的数字的和20.0
输入的数字的平均数2.5

版权声明:本文为weixin_45161329原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。