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 回答