Итак, у меня есть назначение в классе, чтобы написать метод, который возвращает местоположение самого большого элемента в 2D-массиве. Возвращаемое значение представляет собой массив 1D, который содержит два элемента, которые указывают строку и столбец самого большого элемента 2D-массива.проблемы с двумерным массивом
public static void main(String[] args) {
int[] loc=new int[2];
Scanner scan=new Scanner(System.in);
int x,y;
System.out.print("Enter the size of your two-dimensional array. Length then height: ");
x=scan.nextInt();
y=scan.nextInt();
double [][]matrix=new double[x][y];
System.out.println("Enter your two-dimensional array row by column: ");
for (int i=0;i<y;i++){
for (int j=0;j<x;j++){
matrix[j][i]=scan.nextDouble();
System.out.print("i: "+i+" j: "+j + " ");
}
System.out.println();
}
System.out.println();
for (int i = 0; i<x; i++){
for (int j = 0; j<y; j++){
System.out.print(matrix[i][j] + ("i: "+i+" j: "+j + " "));
}
System.out.println();
}
loc=locateLargest(matrix,x,y);
System.out.println(matrix[loc[0]][loc[1]]);
}
public static int[] locateLargest(double[][] a ,int x, int y){
int m=0,n=0;
int[] location={0,0};
double largest=a[0][0];
for (int i=0;i<x;i++){
for (int j=0;j<y;j++){
System.out.println("X: "+i+" Y: "+j +" value: " + a[i][j]);
if (a[i][j]>largest){
location[0]=i;
m=i;
location[1]=j;
n=i;
}
}
}
System.out.println("the location of the largest element of you two-dimensional array is : (" + location[0] + ", " + location[1] + ")");
System.out.println(a[m][n]);
return location;
}
Это мой код. Это довольно неряшливо и, возможно, не имеет большого смысла. Я включил как основной (String [] args), так и мой метод, потому что они необходимы для его настройки. Когда я запускаю его, я получаю неправильный ответ, и я пытаюсь устранить неполадки, распечатав значения (я оставил эти строки печати в своем коде). Ответ, который я получаю, ошибочен. Я верю, что это как-то связано с тем, как вводятся элементы моего массива.
Массив, который я использую, составляет 23,5 35 2 10 4,5 3 45 3,5 35 44,5 9,6, и ответ, который я получаю, равен (2,2), что составляет 5,5, если я читаю его правильно. Значение X равно 3 и Y равно 4.
Любая помощь относительно того, почему мой код возвращает неверный ответ, был бы весьма признателен. Спасибо.
Edit: я добавил значения X и Y.
Не следует 'n = i;' быть 'n = j;'? Почему вы снова используете место? –
Вы также переключаете 'x' и' y' в своих циклах. –
вы переключаете свои индексы в свой шлюз, который читается на входе – Enermis