编写一个程序,不断输入整数,直到给出一个负整数。然后取所有正整数并取它们的平均值

新手上路,请多包涵

我想做的是使用 while 循环来检查 int 数字是正数还是负数,并根据该数字是正数还是负数来执行相关代码。用户将继续输入数字,直到他们输入负数,一旦他们这样做,while 循环将退出,它将在输入负数之前打印出所有正数的平均值。我试图得到每次用户输入数字时重新分配的 int 数字。

这是我的代码:

 import java.util.*;

public class Question7{

    public static void main (String [] args){
        int number=0;
        int average=0;
        int counter=0;
        int sum=0;
        Scanner sc = new Scanner(System.in);
        number = sc.nextInt();
        while (number > 0) {
            counter++;
            sum = sum + number;
            average= sum/counter;
        }
        System.out.println("this is the average:" + average);
    }
}

原文由 Cathal Brady 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 366
2 个回答

您需要在 while 循环中添加 number = sc.nextInt(); 。否则就是死循环。

您错过的另一点是整数除法。上面的大部分答案也都错过了。你的 counter 变量和 sum 变量都是整数。因此除法也将是整数除法。

考虑

sum = 17;
counter = 4;

平均值为 174=4

因此平均值应该是两倍。而且您必须将总和或反数加倍。

 int average = 0;
average = (double)sum/counter;

原文由 Malith 发布,翻译遵循 CC BY-SA 3.0 许可协议

主要问题是您需要使用 number = sc.nextInt(); 最好在循环结束时读取循环内的输入。

除此之外,如果用户输入零怎么办?打破循环与否?平均值应该是 float 还是 double 而不是 int?直到最后你才需要计算平均值。最好告诉用户要输入什么,最好关闭扫描仪。

 public static void main (String [] args){
    int number = 0;
    int counter = 0;
    int sum = 0;

    // prompt the user
    String promptMsg = "Enter an integer (negative to quit): ";
    System.out.println(promptMsg);

    Scanner sc = new Scanner(System.in);
    number = sc.nextInt();
    while (number >= 0) {
        counter++;
        sum += number;

        // prompt the user to enter the next input
        System.out.println(promptMsg);
        number = sc.nextInt();
    }

    // defer computing average until here
    double average = sum / counter;
    System.out.println("this is the average:" + average);

    // close up when done
    sc.close();
}

原文由 pamcevoy 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题