Math.max和Math.min输出允许的最高和最低值

时间:2012-10-07 21:24:06

标签: java

所以我正在尝试制作一个能输出总和,平均值,最小值和最大值的程序。除了最小和最大值输出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());
 }
 }

除最小和最大数字外,一切都正确输出(计数,总和,平均值)。如果有人能指出我正在做错的方向,那就太好了。感谢。

2 个答案:

答案 0 :(得分:6)

撤消您的largest& smallest初始值和Math.max& Math.min会相应地选择正确的值:

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

由于Integer.MIN_VALUE是整数的最小可能值,因此语句为:

largest = Math.max(x, largest);

将在第一次调用时产生值x

答案 1 :(得分:2)

认为你的初始化意味着:

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