编写一个程序,一直取整数,直到给定一个负整数.然后取所有正整数,求它们的平均值

  • 本文关键字:整数 一个 平均值 程序 然后 java while-loop
  • 更新时间 :
  • 英文 :


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

这是我的代码:

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);
    }
}

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

你还忽略了整数除法。上面的大多数答案也忽略了这一点。counter变量和sum变量都是整数。因此除法也是整数除法。

考虑
sum = 17;
counter = 4;

平均值为17/4=4

因此average应该是double。你必须将sum或counter赋值为double。

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

while循环继续运行,直到counter达到Integer极限。那么你的计数器将变为0,并抛出一个异常。

您需要将number = sc.nextInt();行移动到while循环中。因此,每次迭代都需要用户输入。

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

除此之外,如果用户输入一个0怎么办?是否打破这个循环?平均值应该是浮点数还是双精度而不是整型?直到最后才需要计算平均值。最好是告诉用户输入什么,最好是关闭扫描器。

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();
}

我已经修改了你的代码,它应该是这样的:

int average = 0;
int counter = 0;
int sum = 0;
int number = 0;
Scanner sc = new Scanner(System.in);
number = sc.nextInt();
while (number >= 0)
{
    counter++;
    sum +=number;
    number = sc.nextInt();
}
if (counter == 0)
    counter = 1;
average = sum/counter;
System.out.println("this is the average:" + average);

一个基本的解释,一步一步:

  1. 用户输入号码
  2. 如果number小于0,直接跳到步骤6。
  3. 增量计数。
  4. 将sum设置为之前的sum +用户输入。
  5. 转到步骤1
  6. 打印平均值,即sum/counter


生活例子

编写一个连续取整数的程序,直到用户输入一个负数

import java.util.Scanner;
/**
 *
 * @author MR
 */
public class NewTask9 {
    public static void main(String[] args) {
        int sum = 0;
        Scanner sc = new Scanner(System.in);
        while (true) {
            int number = sc.nextInt();
            if (number < 0) {
                break;
            }
            sum = sum + number;
        }
        System.out.println("this is the sum:" + sum);
    }
}
https://www.youtube.com/@codewithmr786😁

最新更新