簡體   English   中英

如何正確獲得數字序列中的最大和最小數字?

[英]How do I correctly get the largest and smallest numbers in a sequence of numbers?

我應該從一系列數字中得到最小和最大的數字。 我知道每種方法的方法體可能都不正確。 有什么幫助嗎?

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

  public DataSet()
   {
   sum = 0;
   count = 0;
   largest = 0;
   smallest = 0;
   }

 public void addValue(int x)
  {
   sum = sum + x;
   count++;
  }

 public int getSum()
 {
   return sum;
 }

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

 public int getLargest()
 {
   int largest = Integer.MAX_VALUE;//not giving right answer, don't know how to use
   return largest;
 }

  public int getSmallest()
 {
   int smallest = Integer.MIN_VALUE;//not giving right answer, don't know how to use
   return smallest;
  }
}

這里是測試人員類(如果需要的話),盡管我認為問題不在這里。

 public class DataSetTester
 {  
   public static void main(String[] args)
    {
    DataSet myData = new DataSet();
    myData.addValue(100);
    myData.addValue(5);
    myData.addValue(4);
    myData.addValue(2);

    System.out.println("Sum = " + myData.getSum());
    System.out.println("Average = " + myData.getAverage());
    System.out.println("Largest value = " + myData.getLargest());
    System.out.println("Smallest value = " + myData.getSmallest());
   }
   }

Integer.MAX_VALUEInteger.MIN_VALUE返回由Integer值表示的最大和最小數字

相反,在添加方法中,您需要在添加值時進行比較,可以使用Math.minMath.maxMath.min比較,例如...

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

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

這是一個相當容易的任務,您可能會想得太重​​。 添加值時,必須通過向addValue()添加一些if語句來檢查是最小還是最大值。

    public void addValue(int x)
    {
        sum = sum + x;
        count++;
        if(x > largest)
             largest = x;
        else if(x < smallest)
             smallest = x;
    }

之后,您只需要返回getSmallest和getLargest方法中的最大和最小值即可。 它們應如下所示:

    public int getLargest()
   {
   return largest;
   }

   public int getSmallest()
   {
   return smallest;
   }

有幾種方法可以做到這一點。 一種簡單的解決方案是修改您的addValue()方法:

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

public void addValue(int x) {
   sum = sum + x;
   count++;
   this.largest = (x > this.largest) ? x : this.largest;
   this.smallest = (x < this.smallest) ? x : this.smallest;
}

另外,您將需要刪除以下行:

int largest = Integer.MAX_VALUE;

int smallest = Integer.MIN_VALUE;

從吸氣劑。

暫無
暫無

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

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