Java中n个数字的平均值

t3irkdon  于 2023-05-05  发布在  Java
关注(0)|答案(8)|浏览(155)

使用循环,我想计算Java中n个数字的平均值,当用户输入0时,循环结束。下面是我写的代码:

public class start {
    public static void main(String[] args) {
        System.out.println("Enter an int value, the program exits if the input is 0");
        Scanner input = new Scanner (System.in);
        int h = 0;
        while (input.nextInt() == 0){
            int inp = input.nextInt();
            int j = inp;
            int i = 0;
            h = j + i;
            break;
        }

        System.out.println("The total is: "+ h);
    }
}

我是不是犯了什么逻辑错误?

blmhpbnm

blmhpbnm1#

  • 不要把和h命名为sum。
  • while条件错误
  • 为什么要用inp和j和i?
  • 有一个无条件的休息-为什么?
  • 你说的是平均数。你知道平均数是多少吗?
  • 你的输出信息不是关于平均值-它是关于总和。
0qx6xfy6

0qx6xfy62#

“我是不是犯了什么逻辑错误?“
是的,这看起来像是家庭作业题,所以我就不给你们拼出来了,但是想想i的值是什么,在这个例子中h = j + i是什么意思。
您还需要小心调用input.nextInt()。当你每次通过循环调用它两次时会发生什么(这就是你正在做的)?

piztneat

piztneat3#

作业,对吧?
在while循环条件中调用input.nextInt()并填充int inp意味着每次循环都阅读两个数字(其中一个被忽略)。您需要找出一种方法,每次循环迭代只读取一个数字,并将其用于== 0比较以及inp比较。
另外,在while循环外使用h是正确的,但我认为您将自己与循环内的ji混淆了。您可以考虑稍微更具描述性的名称--这将使您的代码更容易推理。

watbbzwu

watbbzwu4#

你需要保留一个计数器,记录你读了多少个数字,这样你就可以用这个数字除以总数,得到平均值。

eaf3rand

eaf3rand5#

编辑while循环:

while(true){
    int e=input.nextInt();
    if(e==0) break;
    h+=e;
    numberOfItems++;
}

您最初的实现调用了nextInt()两次,这会导致每隔一个数字就丢弃一个(这肯定不是您想要做的)。

swvgeqrz

swvgeqrz6#

假设你只要求用户输入一次,如果数字为零,你只想显示平均值。你需要在while循环外声明一个变量,它将不断添加用户输入的不同数字,沿着第二个变量,它跟踪用户输入的案例数,并保持递增1,直到用户输入的数字不为零。当用户输入0时,循环将中断,这里将显示我们的平均值。

import java.util.Scanner;

public class LoopAverage
{
    public static void main(String[] args0)
    {
       Scanner scan = new Scanner(System.in);
       System.out.println("Enter any Integer value : ");
       int value = -1, sum = 0, count = 0;
       while((value = scan.nextInt()) != 0)
       {
         count++;
         sum = sum + value;
       }
       System.out.println("Average : " + (sum / count));
   }
}

希望能帮上忙
问候

wz8daaqr

wz8daaqr7#

是的,大量的逻辑错误。

  • 如果while循环条件错误,则会消耗输入的第一个值,除非该值为0,否则永远不会进入循环
  • i var没有目的
  • 你在一次迭代后就崩溃了
  • 你不是在计算
  • 你不是在递增平均被除数
  • 你不是在计算平均值
  • 这看起来像你把一些代码放在一起并发布了它。只要尝试运行它,就会发现最明显的错误。

其他一些需要考虑的事项:

  • 确保检查除以0
  • 如果你做一个整数除法,你可能会得到一个不正确的平均值,因为它会被四舍五入。最好将除数或被除数转换为浮点数
  • 变量名应该是有帮助的,养成使用它们的习惯
kulphzqa

kulphzqa8#

我建议你参考“while”循环的条件:如果条件满足,程序会怎么做?(如果你懂一点VB,do ... until ...然后...)
另外,当您调用scanner.nextInt()时,程序会做什么?对于每个输入,您应该如何调用它?
最后但并非最不重要的一点是,什么时候应该使用“break”或“continue”?
对于基础知识,如果你在一门课程,建议你去理解笔记。或者你可以找到一些解释Java细节的好书。Java中的Thinking
喜欢学习Java。

相关问题