2013-02-22 35 views
0

編寫一個名爲smallestLargest的方法,要求用戶輸入數字,然後打印用戶輸入的所有數字中最小和最大的數字。您可以假設用戶輸入一個大於0的有效數字來表示要讀取的數字的數量。這裏是一個對話框示例:打印最小和最大的數字。輸出不是我想要的

你想輸入多少個數字? 4

Number 1: 5 
Number 2: 11 
Number 3: -2 
Number 4: 3 
Smallest = -2 
Largest = 11 

這就是我所做的,但我無法獲得最小和最大的輸出。

import java.util.*; 
public class smallestLargest{ 
    public static void main(String[] args){ 

     System.out.print("How many numbers do you want to enter? "); 
     Scanner sc=new Scanner(System.in); 
     int count=sc.nextInt(); 

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

     for(int i=1;i<=count;i++){ 
      System.out.println("Number" + i + ": "); 
      int nextNumber=sc.nextInt(); 
      if(nextNumber<smallest){ 
       smallest+=nextNumber; 
      } 
      else if(nextNumber<largest){ 
       largest+=nextNumber; 
      } 


     } 
     System.out.println("Smallest= "+ smallest); 
     System.out.println("Largest= "+ largest); 



    } 
} 

回答

2

這就是問題所在:

if(nextNumber<smallest){ 
    smallest+=nextNumber; 
} 
else if(nextNumber<largest){ 
    largest+=nextNumber; 
} 

你想在所有的什麼沒有做。

我不會給你解決方案,但想一想 - 一次只做一個。我們從「最小」開始。

  • 如果我們當前最小的數字是5,並且有人輸入2,那麼新的最小數字應該是多少?爲什麼?

  • 如果我們當前的最小數字是5,並且有人輸入10,那麼新的最小數字應該是多少?爲什麼?

工作,然後應用相同的思維過程「最大數量」。

+0

得到了我的解決方案非常感謝你! – user2098510 2013-02-22 08:03:07

+0

@ user2098510:根據Jon引用的內容,僅供參考,有*三個單獨的問題,因此請仔細按照思維過程。很容易只捕獲其中的一兩個。 – 2013-02-22 08:10:54

0

不要使用「else if」,因爲在第一個循環中,數字會通過兩個測試 - 即它會是最小的AND最大的,也不會使用「+ =」,只是「=」並改變「最大」。因此,像:

if(nextNumber<smallest) 
    smallest=nextNumber; 

if(nextNumber>largest) 
    largest=nextNumber; 
+0

那麼,第一個數字是最小和最大的就很好了。這樣看:如果只有一個數字,它是最小的還是最大的?在我的世界裏,兩者都有。 – jlordo 2013-02-22 08:05:59

0

點點 '我懶' 的解決方案:

 Scanner sc = new Scanner(System.in); 
     List<Integer> numbers = new ArrayList<Integer>(); 
     while (sc.hasNextInt()) 
     { 
      numbers.add(sc.nextInt()); 
     } 
     System.out.println("Smallest= " + Collections.min(numbers)); 
     System.out.println("Largest= " + Collections.max(numbers)); 
相關問題