数値入力に基づく配列を実行しています。再帰を使用して、配列の最小数を見つけます。ユーザーが 0 を入力すると、プログラムは終了します。0 2 3 5 3 と入力すると、負の数を処理するまで問題なく動作します。戻り値は正しく返され、最小の数値は 0 になります。しかし、2 9 92 2 -1 0 と入力すると、プログラムは終了しません。 0 したがって、最小値として -1 は表示されません。提案やヘルプ。
import java.io.*;
import java.text.*;
public class Assignment9
{
public static void main (String args[]) throws IOException
{
int i = 0;
double[] NumArray;
NumArray = new double[100];
// input stream reader reads in keyboard inputs, while buffered reader
// reads in the line as a string15.
InputStreamReader inRead = new InputStreamReader(System.in);
BufferedReader buffRead = new BufferedReader(inRead);
String line = buffRead.readLine();
// if the string is equal to 0 and is false AND i is less than22.
// 100, parse string into double.23.
try
{
while (line.equals("0") == false && i<100)
{
i++;
line = buffRead.readLine();
NumArray[i]=Double.parseDouble(line);
}
}
catch(IOException e)
{
System.out.println("Array index out of bound");
}
double min = findMin(NumArray, 0, NumArray.length - 1);
System.out.print ("The minimum number is " + min + ('\n'));
public static double findMin(double[] NumArray, int startIndex, int endIndex)
{
if (startIndex == endIndex)
{
return NumArray[startIndex];
}
else if(findMin(NumArray, startIndex, endIndex - 1) < NumArray[endIndex])
{
return findMin(NumArray, startIndex, endIndex -1 );
}
else
{
return NumArray[endIndex];
}
}