【问题标题】:Loops and Statistics. Not printing correct value循环和统计。没有打印正确的值
【发布时间】:2016-07-31 12:18:40
【问题描述】:

我写了一个程序,提示用户输入10个成绩,它计算成绩的总和、成绩的平均值、最高成绩、最低成绩以及最高和最低之间的范围。然后它使用 system.out.print 打印所有这些东西。

我的问题是,除了最高价值之外,一切都有效。这是我的代码。

int x = 10; 诠释 i = 1; 整数总和 = 0; 整数猜测 = 100; 整数最大值 = 100;

while (i <= 10) {
x = Integer.parseInt(JOptionPane.showInputDialog("Enter one grade at a time."));
i++;
sum+=x;

if(x<guess){
   guess = x;
    }
if(x>max){
    max = x;

} 

}
System.out.println("The sum of your grades is " + sum);
System.out.println("The average of your grades is " + (sum/10));
System.out.println("The smallest grade is " +guess);
System.out.println("The highest grade is " +max);
System.out.println("The range of your grades is " + (max-guess));

假设输入的 10 个数字是 10,20,30,40,50,60,70,80,90,99,它会打印出“最高分是 100”,但没有输入 100。它总是显示 100。我该如何解决这个问题?谢谢!!

【问题讨论】:

标签: java loops if-statement statistics


【解决方案1】:

将 max 设置为 0 而不是 100:

int max = 0;

您最初将 max 设置为 100。这意味着在最后一次迭代结束时(其中 x 等于 99),此条件

if(x > max)

应该是false。

(请注意 100 如何大于您在测试样本中使用的任何数字。如果包含大于 100 的数字,则情况并非如此,并且您的代码似乎工作。)

【讨论】:

  • 哇,多么简单的修复,哈哈,谢谢!!将在 7 分钟内接受答复。
【解决方案2】:

看起来你用 100 初始化了 max,所以它总是大于 x 并且不会改变。将 max 的声明更改为零,它应该可以工作。

【讨论】:

    【解决方案3】:

    因为在初始变量 int max = 100;您将默认值设置为 100(最大值),因此编译器会检查输入的值是否小于 100,这是默认值。没有。所以 max 变量会像往常一样保持 100 的值,除非有更高的输入

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-07
      • 1970-01-01
      • 1970-01-01
      • 2021-12-31
      相关资源
      最近更新 更多