我正在编写一个面向对象的程序,它接收某个对象的名称和值,然后给出值的总和及其平均值。所以程序的目的就是让用户输入任意数量的值,然后输入小于0的值退出。然后程序生成输入值的总和及其平均值。问题是循环将哨兵值作为对象的值。
我该如何防止这种情况发生?
import java.util.Scanner;
public class TestStudent {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Student s = new Student();
s.setName(sc.nextLine());
System.out.println("Please enter in scores and to stop enter a score less than 0");
int x = 0;
while (x >= 0) {
x = sc.nextInt();
if(x >= 0) {
s.addQuiz(sc.nextInt());
}
else break;
}
System.out.println(s.getName());
System.out.println(s.totalScore());
System.out.println(s.averageScore());
}
}
这些是我正在使用的修改器和访问器。
public int totalScore() {
return quiz;
}
public void addQuiz(int score) {
quiz = quiz + score;
num++;
}
public double averageScore() {
average = quiz/num;
return average;
}
最佳答案
仔细阅读您编写的循环。您调用 nextInt()
两次,一次获取 x
的值,另一次调用 addQuiz()
方法:
while (x >= 0) {
x = sc.nextInt();
if (x >= 0) {
s.addQuiz(sc.nextInt());
}
else break;
}
关于java - 我的面向对象程序不会注册哨兵值并存在循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18949320/