簡體   English   中英

Math.max和Math.min輸出允許的最高和最低值

[英]Math.max and Math.min outputting highest and lowest values allowed

所以我正在嘗試制作一個能輸出總和,平均值,最小值和最大值的程序。 除了最小和最大值輸出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());
 }
 }

除最小和最大數字外,一切都正確輸出(計數,總和,平均值)。 如果有人能指出我正在做錯的方向,那就太好了。 謝謝。

反轉largestsmallest初始值, Math.maxMath.min將相應地選擇正確的值:

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

由於Integer.MIN_VALUE是整數的最小可能值,因此語句:

largest = Math.max(x, largest);

將在第一次調用時產生值x

認為你的初始化意味着:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM