2012-03-29 17 views
0

これで、0を入力するまでユーザー入力を取得する必要があります。配列に格納して最小値を出力する必要があります。しかし、それは並べ替えの代わりに与えられた最後の入力番号を与え続け、リストの最小値を取得します。これまで私が行ってきたことがあります。再帰を使用した最小値の検索

import java.io.*; 
import java.util.*; 

public class FindingMin 
{ 

    public static void main(String[] args) throws IOException 
    { 
     int[] Numbers = new int[100]; 
     int minimum = 0; 
     int InputParser; 
     String input= "1"; 


     try 
     { 
      InputStreamReader stream = new InputStreamReader (System.in); 
      BufferedReader scan = new BufferedReader(stream); 

      InputParser = Integer.parseInt(input); 

      while(InputParser != 0) 
      { 
       input = scan.readLine(); 
       InputParser = Integer.parseInt(input); 
       for(int i = 0;i<Numbers.length;i++) 
       { 
        if(InputParser == 0) 
        { 
         InputParser = 0; 
        } 
        else 
        Numbers[i] = InputParser; 

       } 

      } 

      minimum = findingMin(Numbers,Numbers[0],Numbers.length-1); 
      System.out.println("The minimum number is "+minimum); 


     } 
     catch(NumberFormatException exception) 
     { 
      System.out.println("Please enter integers only"); 
     } 

    } 

    public static int findingMin(int[] list, int start, int end) 
    { 
      if (start == end) 
       return list[start]; 
      else 
      { 
      int Min = findingMin(list, start, end-1); 
      if (Min < list[end]) 
       return list[end]; 
      else 
       return Min; 
      } 


    } 
} 

ご意見をお寄せください。あなたは余分なループを持っているためだ

+3

なぜあなたは 'int [0]'で開始intを渡していますか?たぶんそれを最初に変えてみてください。 –

+1

この宿題はありますか? –

+0

命名規則、スペーシング、インデント、中括弧などと一貫してください。慣習の矛盾があるときは、コードについて推論するのが難しいです。 –

答えて

2

while(InputParser != 0) 
{ 
     input = scan.readLine(); 
     InputParser = Integer.parseInt(input); 
     for(int i = 0;i<Numbers.length;i++) 
     { 
      if(InputParser == 0) 
      { 
       InputParser = 0; 
      } 
      else 
       Numbers[i] = InputParser; // <-- you set all numbers 
              //  to the last input here 

     } 

} 

正しいバージョンは次のようになります。また

int i = 0; 
while(InputParser != 0) 
{ 
     input = scan.readLine(); 
     InputParser = Integer.parseInt(input); 
     if(InputParser == 0) 
     { 
      InputParser = 0; 
     } 
     else 
     { 
      Numbers[i] = InputParser; 
      i++; 
     } 
} 

は、呼び出し元のメソッドは次のようになります。

minimum = findingMin(Numbers,0,Numbers.length-1); 

ない

minimum = findingMin(Numbers,Numbers[0],Numbers.length-1); 
関連する問題