java - 我的面向对象程序不会注册哨兵值并存在循环

标签 java object while-loop sentinel

我正在编写一个面向对象的程序,它接收某个对象的名称和值,然后给出值的总和及其平均值。所以程序的目的就是让用户输入任意数量的值,然后输入小于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/

相关文章:

java - Guava 基于策略的缓存

JavaScript 虚拟宠物

c# - 自定义对象加法/减法

java - 无法更新静态变量(容易修复吗?)(Java)

Java 到 C++ 语法

while 循环的 Pythonic 枚举

java - tcp客户端和服务器不互相接收数据

java - 使用 Maven 将 XML 文件放入 jar 的非资源中

c# - 尝试比较 C# 中的字符

java - 为什么 JavaFX 舞台/窗口/应用程序在更改场景后不刷新?