3

そのため、合計値、平均値、最小値、最大値を出力するプログラムを作成しようとしています。最小値と最大値が2147483647と-2147483647を出力していることを除いて、基本的にすべてを理解しています。これらは、Javaが計算する絶対的な最小値と最大値であると思います。とにかく、ユーザーが入力した数値を計算したいので、これは明らかに正しくありません。

これが私のクラスです。addValueメソッドで問題が発生していると思います。

public class DataSet
{
private int sum;
private int count;
private int largest;
private int smallest;
private double average;

public DataSet()
{
    sum = 0;
    count = 0;
    largest = Integer.MAX_VALUE;
    smallest = Integer.MIN_VALUE;
    average = 0;
}

public void addValue(int x)
{
    count++;
    sum = sum + x;
    largest = Math.max(x, largest);
    smallest = Math.min(x, smallest);
}

public int getSum()
{
    return sum;
}

public double getAverage()
{
    average = sum / count;
    return average;
}

public int getCount()
{
    return count;
}

public int getLargest()
{
    return largest;
}

public int getSmallest()
{
    return smallest;
}

 }

そして、これがこのプロジェクトの私のテスタークラスです:

 public class DataSetTester {
 public static void main(String[] arg) {
     DataSet ds = new DataSet();
     ds.addValue(13);
     ds.addValue(-2);
     ds.addValue(3);
     ds.addValue(0);
       System.out.println("Count: " + ds.getCount());
       System.out.println("Sum: " + ds.getSum());
       System.out.println("Average: " + ds.getAverage());
     System.out.println("Smallest: " + ds.getSmallest());
       System.out.println("Largest: " + ds.getLargest());
 }
 }

最小数と最大数を除いて、すべてが正しく出力されます(カウント、合計、平均)。誰かが私が間違っていることの正しい方向に私を向けることができれば、それは素晴らしいことです。ありがとう。

4

2 に答える 2

7

largest&smallest初期値を逆にすると、 Math.max&Math.minはそれに応じて正しい値を選択します:

largest = Integer.MIN_VALUE;
smallest = Integer.MAX_VALUE;

Integer.MIN_VALUE整数の可能な最小値と同様に、次のステートメントは次のようになります。

largest = Math.max(x, largest);

x最初に呼び出されたときに値が返されます。

于 2012-10-07T21:26:02.443 に答える
2

初期化の意味は次のとおりです。

largest = Integer.MIN_VALUE;
smallest = Integer.MAX_VALUE;
于 2012-10-07T21:25:56.327 に答える