黑马程序员技术交流社区

标题: 求大神帮帮看看这几行代码 哪里不对 [打印本页]

作者: 骚动的石头    时间: 2016-8-2 21:48
标题: 求大神帮帮看看这几行代码 哪里不对
为什么第二次循环不执行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






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

谢谢谢谢  照你的方法试了 可以
作者: 13411939415    时间: 2016-8-2 23:41
骚动的石头 发表于 2016-8-2 22:23
谢谢谢谢  照你的方法试了 可以

能帮到你就好了




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