Java中最大的价值

时间:2015-06-28 06:09:54

标签: 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);

非常感谢任何帮助。

2 个答案:

答案 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];