我的程序旨在根据用户输入的类大小(S,M,L,X)分配一个整数值。然后,在后面的方法中,我使用此值来计算班级中可用的剩余座位。我遇到的这个问题是,尽管程序正在运行,但无论用户输入什么类大小或者已经注册的学生数量,返回的值始终为零。
该程序包含一些其他不相关的步骤,所以我已经分离了上述方法以便于参考,但如果这更容易,我可以发布我的完整代码。
我的代码分配整数值:
public static int courseSize() {
System.out.print("Please enter the course size (possible values are:
S, M, L, or X):");
size = console.next().charAt(0);
switch(size) {
case 'S': totalSeats = 25;
break;
case 'M': totalSeats = 32;
break;
case 'L': totalSeats = 50;
break;
case 'X': totalSeats = 70;
break;
default: System.out.println("Please enter S, M, L, or X");
}//Close switch statement
console.nextLine();
return totalSeats;
}//Close courseSize
这是获取注册学生人数和计算可用座位数的代码:
public static void numStudents() {
System.out.print("How many students are currently registered for this course? ");
studentsReg = console.nextInt();
}//Close numStudents method
//This method returns the number of open seats remaining
public static int calcAvail () {
openSeats = (totalSeats - seatsTaken);
return openSeats;
} //Close calcAvail method
这是收集用户输入的输出。您可以看到用户输入了L(50个座位),并且有13个学生已注册。
但是,您可以在下面的输出中看到它表示剩余的座位数为0。
此代码中的所有变量都在我的类下声明为public,static变量。
有关为什么我的计算不起作用的任何想法?我倾向于将问题作为我的switch语句,因为它使用char作为输入,然后将其存储为整数;但是,输出仍然会在屏幕上打印出正确的数字。
答案 0 :(得分:1)
在console.nextLine();
numStudents()
默认缺少中断
default: System.out.println("Please enter S, M, L, or X");
break;
}
return totalSeats;
}
你可以做到
default: System.out.println("Incorrect entry");
courseSize();
break;
}
和
openSeats = (totalSeats - seatsTaken);
应该是
openSeats = (totalSeats - studentsReg );
答案 1 :(得分:0)
我会使用以下代码清除您在numStudents()中调用nextInt()所留下的EOL字符
public static void numStudents() {
System.out.print("How many students are currently registered for this course? ");
//code A
studentsReg = console.nextInt();
console.nextLine();
//or
//code B
studentsReg = Integer.parseInt(console.nextLine());
}//Close numStudents method
然后我会在你的开关周围换一个while(),以确保你的用户必须输入一个有效的选择或重试,并使用nextLine()而不是next(),这也留下了一个EOL字符(' \ n'。)
public static int courseSize() {
boolean validInput = false;
while(!validInput)
{
validInput = true;
System.out.print("Please enter the course size (possible values are: S, M, L, or X):");
size = console.nextLine().charAt(0);
switch(size) {
case 'S': totalSeats = 25;
break;
case 'M': totalSeats = 32;
break;
case 'L': totalSeats = 50;
break;
case 'X': totalSeats = 70;
break;
default: System.out.println("Incorrect Value Entered, Please enter S, M, L, or X");
validInput = false;
break;
}//Close switch statement
}
return totalSeats;
}//Close courseSize