关于java — Scanner 类的一些总结

导入Scanner类

  • 导入格式:import java.util.Scanner;
  • 由导入格式中可看到有一个 util 包,这是 java 提供的实用工具包,util 包提供了许多实用的方法和数据结构(如日期(Data)类、日历(Calendar)类来产生和获取日期及时间,堆栈(Stack)、向量(Vector) 、位集合(Bitset)等类来表示相应的数据结构)

创建Scanner对象

  • 创建格式:Scanner sc = new Scanner(System.in);

  • 通过 Scanner 类获取数据的多个方法

    获取整数: int a = sc.nextInt();
    获取小数: double b = sc.nextDouble();
    获取布尔值: boolean bool = sc.nextBoolean();
    获取字符串: String s = sc.nextLine();
                         ~~~~~~~~~~~~~~~~~~~~ String s = sc.next();
    注意:没有 sc.nextChar(); 方法

    //代码演示
    public class ScannerDemo1{
    	public static void main(String[] args){
    		Scanner sc = new Scanner(System.in);
    		int a = sc.nextInt();
    		double b = sc.nextDouble();
    		boolean bool = sc.nextBoolean();
    		//获取上面三种数据类型的值,直接输入即可
    	}
    }

    关于 sc.nextLine(); 和 sc.next(); 方法的区别:
    nextLine() :会接收回车键,作为录入结束的标记
    next() :不会接收回车键,但是会接收空格作为结束标记,只将空格前的内容进行录入

    public class ScannerDemo2{
    	public static voif main(String[] args){
    		//案例 1
    		Scanner sc = new Scanner(System.in);
    		String s = sc.nextLine();
    		int a = sc.nextInt();
    		System.out.println(s);
    		System.out.println(a);
    		//此时录入 “iloveyou” 和 2
    		//得到的结果为:s="iloveyou",a=2
    
    		//案例 2
    		Scanner sc = new Scanner(System.in);
    		int a = sc.nextInt();
    		String s = sc.nextLine();
    		System.out.println(a);
    		System.out.println(s);
    		//准备录入 2 和 “iloveyou”
    		//此时,录入 2 ,再点击回车,表示完成a的录入,这时按理说应该开始录入s的数据
    		//但这时控制台显示直接将a输出了,只输出了一行,即a=2,并没有给出录入s的时间
    		//所以回顾刚才的输入情况,我们输入的是 2\n,此时a将2接收,但是\n还留在外面
    		//接下来应该开始录入s的数据,但是由于 \n 的存在,又因为 nextLine() 方法是接收 \n 的
    		//所以\n直接被 s 接收,此时就相当于完成了a和s的录入
    		//因此就出现上述的情况,直接输入 2\n 以后就直接打印
    		
    		//案例 3
    		Scanner sc = new Scanner(System.in);
    		int a = sc.nextInt();
    		String s = sc.next();
    		System.out.println(a);
    		System.out.println(s);
    		//此时录入 2 和 "iloveyou"
    		//得到的结果为:a=2,s="iloveyou"
    		//重新执行,录入 2 和 "iloveyou imissyou"
    		//这里录入的s的数据中间有一个空格
    		//第二次录入得到的结果为:a=2,s="iloveyou"
    		//因为字符串录入存在空格,由于内部正则的匹配,所以只会默认将空格前面的字符串赋给 s
    	}
    }
  • 注意:

    1. 若要同时录入多种类型的数据时,最好将 nextLine() 方法放在最前面进行录入,保证录入的完成(可以录入任何字符串)
    2. 若 nextLine() 方法不在最前面,也可以替换 next() 方法来录入字符串,但是字符串中不能包含空格

猜你喜欢

转载自blog.csdn.net/weixin_42419342/article/details/106949851
今日推荐