A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 q19871127 于 2015-6-12 12:29 编辑

我在练习的时候 创建了一个类 里面有3个属性 姓名 年龄 性别 分别是 String int String
使用键盘输入
name=sc.nextLint();
age=sc.nextInt();
sex=sc.nextLine();
如上
为什么 输入年龄之后  性别那个属性 就不让我输入了  直接就跳过了 如果使用三个 nextLine就没事
或者  吧nextLine 换成 next 也没事  有木有高人能解答下

5 个回复

倒序浏览
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()方法直接跳到下一行开始接受输入的内容

我也是刚查阅资料,写的比较乱,希望谅解。谢谢

回复 使用道具 举报
懂了  原来如此  
回复 使用道具 举报
首先你要搞清楚nextInt(),next(),nextLine()这三个方法的含义
nextInt()表示接收下一个整数  以空格作为输入的结束标志
next()  表示接收到的下一个字符串,以回车结束本次输入
nextLine()表示接收到的一行字符内容,以回车作为结束输入的标志
你出现的问题原因是 在你输入第2个整数后 你按了回车 你想输入第三个性别 结果虚拟机接收到的意思是你第三次输入结束了 ,正确应该是 你按空格 接着输入性别 然后按回车,或者你把nextInt()改为nextLine()或者next()这样就可以用回车作为你第二次输入结束的标志
回复 使用道具 举报
核心代码: 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
回复 使用道具 举报
一个对象只能录入一次,你可以用for循环来实现多次录入
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马