黑马程序员技术交流社区

标题: Scanner两次输入的小问题---求助 [打印本页]

作者: P李勇    时间: 2015-4-3 17:48
标题: Scanner两次输入的小问题---求助
我创建了一个Scanner对象然后我想分别输入用户名和密码,见下
                                 System.out.println("请输入用户名:");
                                String newUsername = sc.nextLine();
                                System.out.println("请输入密码:");
                                String newPassword = sc.nextLine();
但是控制台却两个提示一起跳出来了,然后我只输入了一次,再回车就没了。
不应该是先跳出来“请输入用户名:”,输入用户名回车后
再跳出来  "请输入密码:"吗
为什么我的实现不了呢?求助

作者: 艺多不压身丶    时间: 2015-4-3 18:12
{:3_50:}           

QQ截图20150403181034.png (23.4 KB, 下载次数: 58)

QQ截图20150403181034.png

QQ截图20150403181043.png (9.47 KB, 下载次数: 40)

QQ截图20150403181043.png

作者: P李勇    时间: 2015-4-3 18:29
艺多不压身丶 发表于 2015-4-3 18:12

你看我的
我的就是这种。。。。


而且我想问的是switch现在不是可以使用字符串了么,我的也用不了。。怎么设置啊

作者: P李勇    时间: 2015-4-3 18:33
艺多不压身丶 发表于 2015-4-3 18:12

{:3_59:}单独用也可以。。。我放到switch语句里用的,怎么是一下子出来的,额
作者: P李勇    时间: 2015-4-3 18:37
艺多不压身丶 发表于 2015-4-3 18:12

我知道了!!

因为我之前还有个输入,是int型的,然后回车了,是不是把这个回车传给了
请输入用户名!!!
作者: P李勇    时间: 2015-4-3 22:09
P李勇 发表于 2015-4-3 18:37
我知道了!!

因为我之前还有个输入,是int型的,然后回车了,是不是把这个回车传给了

重新构造一个输入就好了{:3_53:}
作者: 屠赞华    时间: 2015-4-3 22:29
你看看这不是可以吗

QQ截图20150403222253.png (13.33 KB, 下载次数: 44)

这跟你的一样

这跟你的一样

作者: 屠赞华    时间: 2015-4-3 22:32
可以的了吧

QQ截图20150403222918.png (20.83 KB, 下载次数: 56)

QQ截图20150403222918.png

作者: 孙振祥    时间: 2015-4-3 22:47
估计你代码有的地方写错了
作者: 夜班心桥    时间: 2015-4-4 10:20
看楼主的代码,不应该出现这种情况,您可以改用next()接收。
向您说的这种情况,当先接收int时,再接收String时,会出现这种情况。
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
String b = sc.nextLine();
此时,在控制台输入时,会发现,a接收到了您输入的整数,而b没接收到输入的字符串。
是由于当您输入完整数时,按了回车符,此时b把回车符接受了。所以会导致这种情况。
作者: 若果每天都努力    时间: 2015-4-4 10:40
当jvm检测到你输入了enter后就认为你输入了。就会进入下一个语句
作者: 若果每天都努力    时间: 2015-4-4 10:41
估计是你当时无意中多敲了一个换行
作者: lwj123    时间: 2015-4-4 11:01
我给你解释解释:
Scanner对象在使用nextInt()之后然后使用nextLine()之后会出现你上面的问题:原因:就在回车符的问题

当在录入nextInt()之后按回车时,该回车符就已经被nextLine()接收了,所以才会有这样的效果!

解决:
使用两个Scanner对象录入数据
都使用nextLine()录入数据,之后再进行转化为你想要的类型!
作者: P李勇    时间: 2015-4-4 13:49
lwj123 发表于 2015-4-4 11:01
我给你解释解释:
Scanner对象在使用nextInt()之后然后使用nextLine()之后会出现你上面的问题:原因:就在 ...

{:2_32:}涨姿势了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2