我正在尝试从数组中打印出最大的值,但我不断出现越界错误。我不确定如何解决它。这是我的代码:
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);
非常感谢任何帮助。
答案 0 :(得分: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++)
答案 1 :(得分:3)
除非您要求手动执行, 您也可以(轻松)使用内置函数Arrays.sort(array); 对数组进行排序然后访问最大元素(数组中的最后一个元素):
double[] array = new double[n];
Arrays.sort(array);
double maxValue = array[array.length-1];