Scanner类概述:
Scanner类是是用来接收控制台输入的字符串以及基本数据类型的类。
常用方法:
1.int nextInt():
接收输入的int型的数据。
结束符为空格或者回车2.String nextLine()
接收输入的是字符串的数据
结束符为回车
3.String next():
接收输入的字符串的数据
结束符为回车
问题:
import java.util.Scanner;
public class Test3 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("请输入的数字");
int scan=scanner.nextInt();
System.out.println("请输入姓名");
String name=scanner.nextLine();
System.out.println(scan);
System.out.println(name);
}
}
结果:
用nextInt()读取第一行输入,执行到用nextLine()读取第二行的输入时,就直接结束了nextLine的输入。
这个是为什么?
通过测试发现,只要nextInt,next,nextdouble方法在nextLine前面时,就会跳过nextline的输入。
原因:
nextInt()是以换行符或者回车结束的,表示输入结束。(我们结束这个输入时,都会按回车键)
而换行符 ” /n“,回车符 也是一个字符.nextLine()会把前者的换行符或者回车一个字符输入,所以nextLine不是没有录入值,而是直接把换行符或者回车符录入,直接结束输入,所以nextLine不需要再从控制台中录入。
解决办法:
1.创建两个Scanner对象,两个对象使用两个不同的方法。
如:
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
Scanner scanner2=new Scanner(System.in);
System.out.println("请输入的数字");
int sca=scanner.nextInt();
System.out.println("请输入姓名");
String name=scanner2.nextLine();
2.把nextLine()放在nextInt()前面
如:
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("请输入姓名");
String name=scanner.nextLine();
System.out.println("请输入的数字");
int sca=scanner.nextInt();