.................

Scanner中的next()与nextLine()的问题

/**
* 问题:当调用完以空格作为分割符的方法后,再调用一个以换行符(回车)的方法时
* 这个方法不会等待你继续输入,而是自动输入了空字符串""
* 打印出来的内容,就是空字符串
* 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();

}

 


 




 

posted on 2023-03-08 16:48  么么^  阅读(33)  评论(0编辑  收藏  举报

Live2D