2015-10-04 53 views
0

中尋找最小,我有一些問題,與此代碼:陣列中的

import java.util.*; 

public class Function{ 
    public static void main(String[] Problem) { 
     int i, continut, minim = 0; 
     Scanner in = new Scanner(System.in); 
     System.out.println("Type the maximum number of element:"); 
     continut = in.nextInt(); 
     int array[] = new int[continut]; 
     for (i = 0; i < continut; i++) { 
      array[i] = in.nextInt(); 
     } 

     for (i = 0; i < continut; i++) { 
      if (array[i] < minim) { 
       minim = array[i]; 
      } 
     } 

     System.out.print(minim); 
    } 
} 

我不明白爲什麼我運行這個程序後的輸出總是給我微量= 0。

回答

3

您當前的minim設置爲0,您可能提供了更大的數字,這意味着最小值永遠不會被任何更小的數字替換。

爲了避免這個問題,你可以從用戶

  1. 第一個值初始化minim
  2. 最大可能整數minim = Integer.MAX_VALUE
1
minim=Integer.MAX_VALUE 

而不是0應該做的工作。這樣,你幾乎可以肯定第一個值睾丸低於minim

0

而不是0您可以用數組的第一個元素初始化它像

minim=array[0]; 

現在你可以很容易地從陣列檢查最低!

0

分配第一輸入至minim,並從第二迭代來比較minim和更新:

int minim = array[0]; 
for (i = 1; i < array.length; i++) { 
    if (array[i] < minim) { 
     minim = array[i]; 
    } 
} 

然而,這要求存在至少一個元件。事實上,如果沒有元素,找到最小值是沒有意義的。 所以這是很好的添加輸入驗證:

while (true) { 
    System.out.println("Type the maximum number of element:"); 
    continut = in.nextInt(); 
    if (contitut > 0) { 
     break; 
    } 
    System.out.println("Invalid input: please enter an integer > 0"); 
} 
-1

你必須存儲您的數組作爲minim的第一個值。然後,如果其他值小於minim,則必須檢查該值與其他值,然後用該值替換該最小值。

你可以做到這一點的代碼之前添加

minim = array[0];