next()和nextLine()一起使用时出现的问题
问题描述:
在同时使用同一个Scanner对象下的next()和nextLine()时,且next()正好在nextLine()上一句执行时,在执行完next()之后会导致nextLine()直接跳过,无法在控制台上进行输入。代码如下。
问题补充:其它的如nextDouble() ,nextFloat() ,int nextInt() 等方法与nextLine()连用时,也会出现如上图所示情况。
Scanner scanner = new Scanner(System.in);
System.out.print("请输入字符一:" + '\n');
String i = scanner.next();
System.out.print("请输入字符二:" + '\n');
String j = scanner.nextLine();
System.out.println("您输入的字符一i为:" + i);
System.out.println("您输入的字符二j为:" + j);
这种情况下无法在控制台中输入字符二的内容。
问题分析:
程序运行后我们在控制台输入了123,按下回车键表示输入结束,准备去输入字符串的值,结果程序直接结束了。输出结果只有123 。
这是因为在我们按下回车键结束数字输入时,由于回车键是\r\n,属于字符串,而下面要录入的也刚好是字符串,系统就默认将\r\n 给了str,而nextLine() 方法解结束符也恰好为回车符,所以结束了字符串的输入。
[https://blog.csdn.net/weixin_45890113/article/details/126199142]:
解决办法:
- 将next()和nextLine()调换位置,代码如下
Scanner scanner = new Scanner(System.in);
System.out.print("请输入字符一:" + '\n');
String j = scanner.nextLine();
System.out.print("请输入字符二:" + '\n');
String i = scanner.next();
System.out.println("您输入的字符一i为:" + i);
System.out.println("您输入的字符二j为:" + j);
该种情况下即可正常输出。
- next()和nextLine()使用不同的Scanner对象进行创建
Scanner scanner = new Scanner(System.in);
Scanner scanner1 = new Scanner(System.in);
System.out.print("请输入字符一:" + '\n');
String i = scanner.next();
System.out.print("请输入字符二:" + '\n');
String j = scanner1.nextLine();
System.out.println("您输入的字符一为:" + i);
System.out.println("您输入的字符二为:" + j);
标签:nextLine,Scanner,System,next,一起,输入,out
From: https://www.cnblogs.com/shuiyunmiao/p/17157244.html