2017-09-06 52 views
-2

因此,該程序應該能夠讀取任意數量的數字,並獲得平均值,總數和最小/最大值。輸入數字,循環停止,一旦進入0(0不計數最小/總數等)我卡在最小值。我知道它不應該被硬編碼爲0,但是我會如何將它設置爲在循環中取最小值?試圖找到在Java中輸入的數字的發現最小值

public class Main { 
public static void main(String[] args) 
{ 
    double sum = 0, maxVal = 0,minVal = 0, average = 0, number; 
    int count = 0; 
    Scanner input = new Scanner(System.in); 

    while((number = input.nextDouble()) != 0) 
    { 
     sum += number; 
     count++; 
     if(number < minVal) 
     { 
      minVal = number; 
     } 
     if(number > maxVal) 
     { 
      maxVal = number; 
     } 
    } 
    average = sum/count; 
    System.out.println("Total Count: " + count); 
    System.out.println("Sum: " + sum); 
    System.out.println("Mean: " + average); 
    System.out.println("Max Value: " + maxVal); 
    System.out.println("Min Value: " + minVal); 
} 

}

+0

如果'minValue'從0開始,則需要<0來觸發更新。 – John3136

+0

像'Double.POSITIVE_INFINITY'這樣的東西啓動'minVal'。 –

回答

1

您初始化minmax到零,然後與用戶輸入進行比較,除非值爲正,你不會設置max(或負設置min)。更改初始值,如

double sum = 0, maxVal = Double.NEGATIVE_INFINITY, 
     minVal = Double.POSITIVE_INFINITY, average = 0, number; 

而不是將兩者設置爲0

0

您可以用第一個輸入的數字初始化minValmaxVal,然後才能開始循環。

double sum = 0, maxVal, minVal, average = 0, number; 
int count = 0; 
Scanner input = new Scanner(System.in); 

maxVal = minVal = number = input.nextDouble(); 
while(number != 0) { 
    ... 
    number = input.nextDouble()) 
} 

這是一個「經典」的教科書解決方案。

相關問題