2015-06-28 3 views
2

Я пытаюсь напечатать наибольшее значение из набора массивов, но я продолжаю получать ошибку за пределами границ. Я не уверен, как именно это исправить. Вот мой код:Наибольшее значение в Java

Scanner console = new Scanner(System.in); 
System.out.print("Please enter the name of the input file: "); 
String inputFileName = console.nextLine(); 

Scanner in = null; 

try { 
    in = new Scanner(new File(inputFileName)); 
} catch (FileNotFoundException e) { 
    System.out.print("Error!"); 
    e.printStackTrace(); 
} 

int n = in.nextInt(); 
double[] array = new double[n]; 

for (int i = 0; i < array.length; i++) { 
    array[i] = in.nextDouble(); 
} 

console.close(); 

double largest = array[n]; // Exception occurs here 
for (int i = 0; i < n; i++) { 
    if (array[i] > largest) { 
     largest = array[i]; 
    } 
} 

System.out.println("The largest value in the data is: " + largest); 

Любая помощь с благодарностью.

ответ

3

Изменить

double largest = array[n]; 

в

double largest = array[0]; 

array[n] вызывает ArrayIndexOutOfBoundsException, поскольку n не является действительным показателем вашего массива.

Это также позволит вам изменить

for (int i = 0; i < n; i++) 

в

for (int i = 1; i < n; i++) 
+0

новобранец ошибке с моей стороны:/спасибо, спасибо !! – coscdummy

+1

Это может привести к ошибке 'ArrayIndexOutOfBoundsException', если массив имеет нулевую длину. Безопасной альтернативой для всех длин массивов будет 'double most = Double.NEGATIVE_INFINITY' (или проверка того, что массив не имеет нулевой длины, конечно). –

+0

@AndyTurner или вы можете добавить проверку, которая требует, чтобы n было положительным, поскольку в противном случае весь этот код бессмыслен. – Eran

3

Если Вы не попросили сделать это вручную, Вы также можете (легко) использовать встроенную функцию Arrays.sort (массив); который сортирует массив, а затем получить доступ к большому элементу (последний в массиве):

double[] array = new double[n]; 
Arrays.sort(array); 
double maxValue = array[array.length-1]; 
Смежные вопросы