我的程序应该提示用户输入数组中的行数和列数,然后输入数组。然后计算并显示数组中最大元素的位置。
我的代码一直显示 (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 < a[0].length; row++){
在第 32 行,但这个错误不断出现:
“线程“main”中出现异常 java.lang.ArrayIndexOutOfBoundsException:3
at Question8_13.locateLargest(Question8_13.java:33)
at Question8_13.main(Question8_13.java:21)
Java 结果:1"
让程序实际运行并且不会出现错误的唯一方法是仅检查 row = 0
最佳答案
在你的循环中:
for (int row = 0; row < a[0].length; row++)
行数是a.length,而不是a[0].length。 a[0].length 是第一行的列数。
关于java - 数组中最大数字的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32660070/