循环似乎不能正常工作,它会跳过第一个字段

时间:2014-06-07 14:11:46

标签: java

好的,这是我的问题。这是我正在处理的代码。在第一个循环,它很好。但当它进入下一个循环时,申请人姓名上的光标不会出现。它跳到学习水平。为什么会这样?我的代码有问题吗?

while (totalScholarship != 0) {
    System.out.println("Applicant Name: ");
    s.setsName(input.nextLine());

    System.out.println("Study Level: ");
    System.out.println("1-Pre Dip, 2-Dip 3-Degree");
    s.setiStudyLevel (input.nextInt());

    System.out.println("Personallity Score: ");
    s.setiPersonalityScore(input.nextInt());

    System.out.println("Parent Income: ");
    s.setdParentIncome(input.nextDouble());

    int iPersonalityScore = s.getiPersonalityScore();
    double dParentIncome = s.getdParentIncome();
    if (iPersonalityScore < 350) {
        if (dParentIncome >= 3000) {
            System.out.println("NOT ELIGIBLE!");
        } else {
            System.out.println("CONGRATULATIONS!");
            bEligible = true;
        }
    } else {
        System.out.println("CONGRATULATIONS!");
    }

    System.out.println("");
    System.out.println(s.toString());
}

2 个答案:

答案 0 :(得分:0)

在此之后添加input.nextLine()

System.out.println ("Parent Income: ");
s.setdParentIncome (input.nextDouble());

答案 1 :(得分:0)

因为在第一次迭代中在"Enter"之后按下的input.nextDouble()键在第二次迭代时作为input.nextLine()内的输入被接收。这就是为什么你觉得输入被跳过的原因。 示例:

int option = input.nextInt();
input.nextLine();  // Consume newline left-over
String str1 = input.nextLine();

因此,在循环结束时输入input.nextLine(),它将全部正常