扫描仪在循环中跳过第一个输入的输入

时间:2014-03-18 14:49:46

标签: java java.util.scanner do-while filewriter

我有一个程序要写入文本文件,只需使用扫描仪的基本输入。我有它所以它通过问题然后是是否添加另一个输入。当用户(或作为我的测试人员)输入y再次执行时,它会同时询问2个顶级问题,因此它无法获得第一个问题的输入,这是为什么会发生这种情况的原因?这是一个例子     你想创建另一个条目吗? Y / N     ÿ     什么是受助人的课程代码?     作业的名称是什么?

do{
    System.out.println("What is the course code for the assignemnt?")
    course = s.nextLine();
    System.out.println("What is the name of the assignment?");
    gName = s.nextLine();
    System.out.println("What did you get on the assignment?");
    yourGrade = s.nextLine();
    System.out.println("What was the assignment out of?");
    gMax = s.nextLine();
    System.out.println("What was the assignment weighted?");
    gWeight = s.nextLine();

    pw.printf("%s|%s|%s|%s|%s",course, gName, yourGrade, gMax, gWeight);
    pw.println("");
    System.out.println("Would you like to create another entry? Y/N");
    YN = s.next().charAt(0);
}
while(YN == 'Y' || YN == 'y');
    pw.close();
}

3 个答案:

答案 0 :(得分:1)

YN = s.next().charAt(0);无法使用下一个nextLine(即下一次迭代)消耗的行尾字符,所以你需要另一个nextLine 1}}之后。或者使用nextLine阅读一行并使用charAt(0)就这样:YN = s.nextLine().charAt(0);

答案 1 :(得分:1)

使用YN = s.nextLine().charAt(0);代替YN = s.next().charAt(0);

答案 2 :(得分:1)

YN = s.next().charAt(0);更改为YN = s.nextLine().charAt(0); 我在这里改变了它,它对我有用,