[英]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_VALUE
和Integer.MIN_VALUE
返回由Integer
值表示的最大和最小數字
相反,在添加方法中,您需要在添加值時進行比較,可以使用Math.min
和Math.max
來Math.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.