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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

为什么第二次循环不执行s1 = sc.nextLine();  这个语句呢?
下面分别为代码 和控制台内容

while (true) {
                        System.out.println("请录入第" + i + "学生姓名(输入over代表录入结束):");
                        s1 = sc.nextLine();
                        if (!s1.equals("over")) {
                                s.setName(s1);
                                System.out.println("请录入第" + i + "学生语文成绩:");
                                int c = sc.nextInt();
                                s.setChinese(c);
                                System.out.println("请录入第" + i + "学生数学成绩:");
                                s.setMath(sc.nextInt());
                                s.setTotal(s.add(s.getChinese(), s.getMath()));
                                i++;
                                fw.write(s.getName() + "\t" + s.getChinese() + s.getMath() + s.getTotal()+"\r\n");

请录入第1学生姓名(输入over代表录入结束):
dd
请录入第1学生语文成绩:
2
请录入第1学生数学成绩:
2
请录入第2学生姓名(输入over代表录入结束):
请录入第2学生语文成绩:
2
请录入第2学生数学成绩:
3





3 个回复

倒序浏览
因为sc.:nextLine()和sc.nextInt()同时使用会出现一些问题,这个在将Scanner类的时候会教。
如果api还没学的话建议学了之后再来做这题。
现在跟你说说怎么改吧
把所有sc.nextInt()换成sc.nextLine(),就是说只使用nextLine()方法来获取控制台输入的内容;
具体代码是  int c = Integer.parseInt(sc.nextLine());      
//这里是把获取到的数字字符串转换成int类型,输入的只能是数字,输入其他字符会报错
回复 使用道具 举报
13411939415 发表于 2016-8-2 22:04
因为sc.:nextLine()和sc.nextInt()同时使用会出现一些问题,这个在将Scanner类的时候会教。
如果api还没学 ...

谢谢谢谢  照你的方法试了 可以
回复 使用道具 举报
骚动的石头 发表于 2016-8-2 22:23
谢谢谢谢  照你的方法试了 可以

能帮到你就好了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马