显示平均小数位数时出现问题。它一直显示.00或.1。
我尝试将其加倍,但仍然得到相同的结果。此外,我想将输入的第一个整数包括在总和中,但我不知道如何。请帮助:

import java.io.*;
import java.util.*;

public class WhileSentinelSum
{
static final int SENTINEL= -999;

public static void main(String[] args)
{
    // Keyboard Initialization
        Scanner kbin = new Scanner(System.in);

    //Variable Initialization and Declaration
        int number, counter;
        int sum =0;
        int average;

    //Input
        System.out.print("Enter an integer number: " );
        number = kbin.nextInt();
        counter=0;


    //Processing
    //Output
        while(number != SENTINEL)
        {
            counter++;
            System.out.print("Enter an  integer number: ");
            number = kbin.nextInt();
            sum += number;
        }

        if (counter !=0)
            System.out.println("\nCounter is: " + counter);
        else
            System.out.println("no input");

        average= sum/counter;
        System.out.println("The sum is " + sum);
        System.out.println("The average is " + average);


        System.out.println();

    }//end main
}//end class

最佳答案

即使您将average声明为doublesumcounter变量也是int,因此Java在将其分配给average之前仍然使用integer division,例如5 / 10生成0而不是0.5

在除法之前将变量之一强制转换为double以强制执行浮点运算:

double average;

...
average = (double) sum / counter;


您可以在进入while循环之前处理第一个数字(如果它不是前哨值),则可以在处理中包含第一个数字。

09-26 05:52