部分来自《疯狂Java讲义》(第二版)

​ Scanner是一个基于正则表达式的文本扫描器,它可以从文件、数据流、字符串中解析出基本类型值和字符串值。

​ Scanner主要提供两个方法来扫描输入:

(1)nextXxx():获取下一个输入项。(其中Xxx可以是Int、Long等代表基本数据类型的字符串)

nextInt() 、nextFloat、nextLine、next等等

【例 1】从键盘获取用户输入的一个整数(int型) http://sc.nextInt();

  Scanner sc = new Scanner(System.in);//System.in代表标准输入(即键盘输入)	
  int num = sc.nextInt();//获取输入的一个整数(只接受int型,如何输入其他类型将报错)
  System.out.println(num);

【例 2】获取一系列的输入(使用Scanner可以输入不同的类型) // sc.nextLine(); 和 sc.nextInt(); 和sc.nextFloat();

Scanner sc = new Scanner(System.in);//System.in代表标准输入(即键盘输入)	
System.out.println("请输入你的姓名:");
String name = sc.nextLine(); 
	
System.out.println("请输入你的年龄:");
int age = sc.nextInt();

System.out.println("请输入你的工资:");
float salary = sc.nextFloat();
	
System.out.println("姓名:"+name+" 年龄:"+age+" 工资:"+salary);

【例 3】Scanner中next()和nextLine()的区别

	Scanner sc = new Scanner(System.in);//System.in代表标准输入(即键盘输入)
	
	System.out.println("请输入第一个字符串");
	String s1 = sc.nextLine();
	System.out.println("你输入的内容为:"+s1+"
");
	
	System.out.println("请输入第二个字符串");
	String s2 = sc.next();
	System.out.println("你输入的内容为:"+s2);

运行效果:

Java获取键盘输入(使用Scanner类获取键盘输入)-风君雪科技博客

如何改成:

Scanner sc = new Scanner(System.in);//System.in代表标准输入(即键盘输入)	
	System.out.println("请输入第一个字符串");
	String s1 = sc.next();
	System.out.println("你输入的内容为:"+s1+"
");
	
	System.out.println("请输入第二个字符串");
	String s2 = sc.nextLine();
	System.out.println("你输入的内容为:"+s2);

当用户输入完第一个字符串之后,程序就已经停止了,也即不能再录入第二个字符串了!!!

(2)hasNextXxx():是否还有下一个输入项。如果只是判断是否包含下一个字符串,则直接使用haxNext()

【例 1】不断从键盘读取输入内容,并将每次读入的内容直接打印出来

	Scanner sc = new Scanner(System.in);//System.in代表标准输入(即键盘输入)
	
	//sc.hasNext():用来判断是否包含下一个字符串
	while(sc.hasNext())
	{
		System.out.println("输入的内容是:"+sc.next());
	}

运行效果:

Java获取键盘输入(使用Scanner类获取键盘输入)-风君雪科技博客

(3)useDelimiter()的用法——改变Scanner的分隔符

如果希望改变Scanner的分隔符(不使用空格作为分隔符):

为Scanner设置分隔符使用useDelimiter(String pattern)即可,该方法的参数是一个正则表达式。

例如:每次读入一行,不管这一行中是否包含空格,Scanner都把它当作一个输入项。在这种需求下,我们可以把Scanner的分隔符设置成回车符(\n),不再使用默认的空白作为分隔符。

	Scanner sc = new Scanner(System.in);//System.in代表标准输入(即键盘输入)
	//只把回车作为分隔符(即:不管这一行中是否包含空格,Scanner都将它看成一个输入项)
	sc.useDelimiter("
");
	String str = sc.next();		
	System.out.println("str="+str);

运行效果:

Java获取键盘输入(使用Scanner类获取键盘输入)-风君雪科技博客

(4)简单应用:输入一行字符(以空格作为分割)给多个变量赋值​

【例1】连续输入两个整形数字,并输出他们的和

	Scanner sc = new Scanner(System.in);//System.in代表标准输入(即键盘输入)
	
	Integer a = sc.nextInt();//默认以空格作为分隔符
	Integer b = sc.nextInt();
	
	System.out.println(a+b);

运行效果:

Java获取键盘输入(使用Scanner类获取键盘输入)-风君雪科技博客

【例2】分别输入一个字符和一个整数,并输出

	Scanner sc = new Scanner(System.in);
	char ch = sc.next().charAt(0);//获取用户输入的字符
	Integer a = sc.nextInt(); //获取用户输入的整数
	System.out.println("ch="+ch+" a="+a);

Java获取键盘输入(使用Scanner类获取键盘输入)-风君雪科技博客