0

我如何平均?我想找到GPA学生总数和学生总数的平均值GPA。例子:

输入:4 4 4 4

输出: 学生总数:4

总平均绩点:16

平均GPA: 4

import java.util.Scanner;

public class practice {
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        int count = 0;
        double GPA = 0, total = 0, average;

        System.out.println("Enter GPA");

        while (GPA >= 0) {
            GPA = keyboard.nextDouble();
            total = total + GPA;
            count++;
        }

        average = total / count;

        System.out.println("Total students: " + count);
        System.out.println("Total GPA " + total);
        System.out.println("Average GPA " + average);
    }
}
4

3 回答 3

7

如果问题是你得到了错误的答案,原因是这个循环:

while (GPA >=0)
{
    GPA = keyboard.nextDouble();
    total = total + GPA;
    count++;
}

大概您打算在用户输入负数时退出循环。它的错误在于它将在总数和计数中包含负数。您可以像这样重写循环:

GPA = keyboard.nextDouble();
while (GPA >=0)
{
    total = total + GPA;
    count++;
    GPA = keyboard.nextDouble();
}

(其他解决方案是可能的)。稍后在您的代码中,您将需要防止第一个数字为负数。如果发生这种情况,count将为 0 并且您希望避免除以 0 并打印无意义的结果。

于 2013-03-20T06:35:21.227 回答
0

您正在这一行的循环中获取输入

GPA = keyboard.nextDouble();

问题是,它将获得另一个输入,并且计数将增加 1。所以你的总数将是 5。你可以通过这种方式实现

while (GPA >=0)
{
    GPA = keyboard.nextDouble();
    if (GPA >=0)
    {
       total = total + GPA;
       count++;
    }
    else
       break;
}
于 2013-03-20T06:37:48.703 回答
0

只需在 while 循环中交换语句的顺序,您的代码就可以正常工作。在这种情况下,您的检查(是否将 i/p 添加到总数中)将在您输入后完成。因此,当您输入 -1 时,您将不会进入 while 循环和最后一个值 - 1 不会被添加。

而(GPA >=0){

total = total + GPA;
GPA = keyboard.nextDouble();
count++;

}

于 2013-03-20T07:02:42.883 回答