我的程序应该提示用户输入数组中的行数和列数,然后输入数组。然后计算并显示数组中最大元素的位置。
我的代码一直显示(0,1)而不是实际结果,(1,2)。有什么想法吗?
我的代码:
import java.util.Scanner;
public class Question8_13 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter the number of rows and columns in the array: ");
int row = input.nextInt();
int col = input.nextInt();
System.out.println("Enter numbers into array: ");
double[][] a = new double[row][col];
for (double[] a1 : a) {
for (int j = 0; j < a1.length; j++) {
a1[j] = input.nextDouble();
}
}
int[] largest = locateLargest(a);
System.out.println("The location of the largest element is at: (" + largest[0] + "," + largest[1] + ")");
for (int i = 0; i < 2; i++) {
System.out.print(largest[i]);
}
}
public static int[] locateLargest(double[][] a) {
double max = 0;
int maxRow = 0;
int maxColumn = 0;
int row = 0;
for (int column = 0; column < a[row].length; column++) {
if (a[row][column] > max) {
max = a[row][column];
maxRow = row;
maxColumn = column;
}
}
int[] largest = new int[2];
largest[0] = maxRow;
largest[1] = maxColumn;
return largest;
}
}
结果:
Enter the number of rows and columns in the array: 3 4
Enter numbers into array:
23.5 35 2 10
4.5 3 45 3.5
35 44 5.5 9.6
The location of the largest element is at: (0,1)
修改
我有:
for(int row = 0; row&lt; a [0] .length; row ++){
在第32行,但这个错误不断出现:
“线程中的异常”主“java.lang.ArrayIndexOutOfBoundsException:3
at Question8_13.locateLargest(Question8_13.java:33)
at Question8_13.main(Question8_13.java:21)
Java结果:1“
我能让程序实际运行的唯一方法就是只检查row = 0
答案 0 :(得分:2)
在你的循环中:
for (int row = 0; row < a[0].length; row++)
行数是a.length,而不是[0] .length。 a [0] .length是第一行中的列数。
答案 1 :(得分:1)
用以下内容替换你的for循环:
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
if (a[i][j] > max) {
max = a[i][j];
maxRow = i;
maxColumn = j;
}
}
}
你只是检查第一行。现在,您将遍历每一行的每列。