好的,这是我的问题。这是我正在处理的代码。在第一个循环,它很好。但当它进入下一个循环时,申请人姓名上的光标不会出现。它跳到学习水平。为什么会这样?我的代码有问题吗?
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());
}
答案 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()
,它将全部正常