/**
* 问题:当调用完以空格作为分割符的方法后,再调用一个以换行符(回车)的方法时
* 这个方法不会等待你继续输入,而是自动输入了空字符串""
* 打印出来的内容,就是空字符串
* next(),nextInt(),nextDouble() 都是有 空格 为 分割符作为下一个输入
* nextLine() 是以 换行符(回车) 为分割符作为下一个输入
*/
解决方法1:重新创建一个新的Scanner对象,因为新创建的Scanner对象一定是干净的(不推荐使用)
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个整数:");
int n = scanner.nextInt();
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String str = sc.nextLine();
}
}
解决方法2:在以“空格”为分隔符的方法如nextInt()后再调用预测nextLine()方法(不推荐使用)
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个整数:");
int n = scanner.nextInt();
scanner.nextLine();
System.out.println("请输入一个字符串:");
String str = scanner.nextLine();
}
解决方法3:无论输入什么数据,都使用nextLine()方法,在根据所需数据类型通过包装类中的方法转为所需类型(推荐使用)
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个整数:");
String n = scanner.nextLine();
int m = Integer.parseInt(n);//通过包装类的方法将字符串类型转为int类型
System.out.println("请输入一个字符串:");
String str = scanner.nextLine();
}
标签:nextLine,String,System,Scanner,next,输入,scanner From: https://www.cnblogs.com/me-me/p/17192611.html