黑马程序员技术交流社区
标题:
关于Scanner的获取键盘输入的问题
[打印本页]
作者:
q19871127
时间:
2015-6-11 23:51
标题:
关于Scanner的获取键盘输入的问题
本帖最后由 q19871127 于 2015-6-12 12:29 编辑
我在练习的时候 创建了一个类 里面有3个属性 姓名 年龄 性别 分别是 String int String
使用键盘输入
name=sc.nextLint();
age=sc.nextInt();
sex=sc.nextLine();
如上
为什么 输入年龄之后 性别那个属性 就不让我输入了 直接就跳过了 如果使用三个 nextLine就没事
或者 吧nextLine 换成 next 也没事 有木有高人能解答下
作者:
乔栋
时间:
2015-6-12 10:09
String name=sc.nextLine();
int age=sc.nextInt();//我理解就是它读取完后,不会换行,
String sex=sc.nextLine();//而nextLine()只是读取完本行剩余内容(光标还在age那行,你写完age后面又没再输入其他内容),再换行。所以读完age后不会读取到sex
String sex=sc.next();//next()方法是以换行或者空格符为分界线接收下一个String类型变量。
//也就是说nextInt()输完后,next()方法直接跳到下一行开始接受输入的内容
我也是刚查阅资料,写的比较乱,希望谅解。谢谢
作者:
q19871127
时间:
2015-6-12 10:20
懂了 原来如此
作者:
forTomorrow
时间:
2015-6-12 10:31
首先你要搞清楚nextInt(),next(),nextLine()这三个方法的含义
nextInt()表示接收下一个整数 以空格作为输入的结束标志
next() 表示接收到的下一个字符串,以回车结束本次输入
nextLine()表示接收到的一行字符内容,以回车作为结束输入的标志
你出现的问题原因是 在你输入第2个整数后 你按了回车 你想输入第三个性别 结果虚拟机接收到的意思是你第三次输入结束了 ,正确应该是 你按空格 接着输入性别 然后按回车,或者你把nextInt()改为nextLine()或者next()这样就可以用回车作为你第二次输入结束的标志
作者:
forTomorrow
时间:
2015-6-12 10:42
核心代码: stu.setName(scanner.nextLine());
stu.setAge(scanner.nextInt());
stu.setSex(scanner.next());
运行结果:
wangfei
25 female
wangfei 25 female
方式二:
核心代码:stu.setName(scanner.nextLine());
stu.setAge(Integer.parseInt(scanner.nextLine()));
stu.setSex(scanner.next());
运行结果:
wangfei
25
female
wangfei 25 female
作者:
邱石
时间:
2015-6-12 10:49
一个对象只能录入一次,你可以用for循环来实现多次录入
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2