当前位置: 首页 > 知识库问答 >
问题:

循环和统计。没有打印正确的值

孔棋
2023-03-14

我编写了一个程序,提示用户输入10个等级,并计算等级之和、等级平均值、最高等级、最低等级以及最高和最低等级之间的范围。然后用这个系统打印所有这些东西。出来打印

我的问题是,除了最高的价值,所有的东西都能工作。这是我的密码。

int x=10; int i=1; int和=0; int猜测=100; int max=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。我该怎么解决这个问题?非常感谢。

共有3个答案

陆翔飞
2023-03-14

因为初始变量int max=100;您将默认值设置为100(最大值),因此编译器会检查输入的值是否小于默认值100。它不是。所以max变量始终保持值100,除非输入值更高

阎彬炳
2023-03-14

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

仲承福
2023-03-14

max设置为0而不是100:

int max = 0;

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

if(x > max)

将是false

(请注意100如何大于您在测试示例中使用的任何数字。如果包含一个大于100的数字,情况就不会是这样,

 类似资料:
  • 我们可以用这里所述的算法求有向图中的圈数。我需要理解算法。 (1)最后那句话到底有什么用处?对algo的工作原理进行简短的描述会很有帮助。由于算法基本上是统计从一个节点返回到同一节点的周期数,所以我们可以使用另一个数组,称之为v,并做以下技巧: (2)我不能实现我刚才写的算法。这是主要的问题,但我认为我需要理解上面的(1)来理解打印所有循环的代码。 我了解到互联网上有算法,我正在尝试使用这个算法。

  • Imma java新手,所以我试着学东西。我创建了一个布尔方法,这是一个小的骰子游戏。我需要这个方法是从main方法调用,并继续玩,而返回值是真的(游戏是赢的),但停止执行,如果返回值是假的。我也需要多少次球员赢了。所以我创造了这样的东西: 初始化为私有静态int

  • 大家好,我被一个问题困住了,想不出解决办法。我使用的是while循环,do while循环和for。我知道我的前两个while循环是正确的,我试图完成的是让我的do while循环和for语句打印出与我的第二个while循环相同的东西。 输入要打印的消息? 你好 输入要打印邮件的次数。输入1-20之间的值: 5 使用do-while循环输出... 第6.0行-你好 do-while循环中的时间..

  • 我很难弄清楚如何根据星号对应的计数(输出右边的数字)显示四舍五入的星号数。 我正在尝试使用1个星号表示100个星号。然而,当我得到一个数字如卷#17是417,我希望它只打印4星号,而不是五;围捕也一样。我尝试使用Math.round()但没有成功。 我真的很感激任何帮助。 我的代码: 我的输出:

  • 我有一个无向图,它被加载为邻接矩阵。我有一个使用BFS算法检测图中循环的方法。我试图实现的是打印所有的边缘,以一种方式,他们表明一个循环,已经找到。 我可以打印一个图形中的所有边,但我不能只打印那些创建循环的边。我怎么让它工作? 边缘: 图表: 节点: 当前错误输出:显示一个周期的部分边沿,但不是全部边沿 预期输出:打印创建循环的所有边,如上面的示例所示, 我想显示:一条边的结束顶点是循环中另一条