#java #arrays #sum
Вопрос:
public class MagicSquare {
public static void main(String[]args){
int[][] tabela = {{ 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }};
System.out.println(d1(tabela));
System.out.println(d2(tabela));
System.out.print(poVrsticah(tabela));
}
//diagnal1
public static int d1(int[][] tab){
int vsota=0;
for (int i=0;i<tab.length ;i ) {
for (int j=0;j<tab[i].length ;j ) {
if (i==j) {
vsota =tab[i][j];
}
}
}
return vsota;
}
//diagnal2
public static int d2(int[][] tab){
int vsota=0;
for (int i=0;i<tab.length ;i ) {
for (int j=0;j<tab[i].length ;j ) {
if (i j==tab.length-1) {
vsota = tab[i][j];
}
}
}
return vsota;
}
//Method rows
public static int[] poVrsticah(int[][]tab){
int[] rez = new int[tab.length];
for (int i=0;i<tab.length ;i ) {
for (int j=0;j<tab[i].length ;j ) {
rez[i] = tab[i][j];
}
}
return rez;
}
//method column
public static int[] poStolpcih(int[][]tab){
int[] rez = new int[tab.length];
for (int i=0;i<tab.length ;i ) {
for (int j=0;j<tab[i].length ;j ) {
//Code here(1 line missing)
}
}
return rez;
}
}
Мой учитель отправил мне электронное письмо с исправленным кодом, который я не знаю, как полностью заполнить.Упражнение состоит в том, чтобы суммировать строки и столбцы в 2d-массиве. В комментариях, которые он оставил, Он сказал, что не хватает только 1 строки. Я не знаю, что поставить на их место. Я попытался вставить rez[i] = tab[i][j]; чтобы подвести итог. Но в итоге получается надпись «[I@2c7b84de». Что я прочитал, это проблема с преобразованиями int и строк. Я не уверен, что это правильный подход, так как я потерялся в соусе. Пожалуйста, помогите
Комментарии:
1. чтобы получить обычную строку вместо «[I@2c7b84de», вам необходимо переопределить свой метод
2. Я думаю, так и должно быть
rez[j] = tab[i][j];
. Кроме того, если предоставленные входные данные не являются квадратной матрицей, т. е. Количество строк = столбцов, то вам нужно использоватьint[] rez = new int[tab[0].length];
для столбцов. И для решения"[I@2c7b84de"
этой проблемы вы можете просто выполнить цикл над выходным массивом и распечатать его элементы.
Ответ №1:
Это работает для любой матрицы, а не только для квадратной матрицы, что означает, что нет необходимости иметь одинаковое количество строк и столбцов в 2D-массиве.
public static int[] calculateSumRow(int[][] array) {
int length = array.length;
int sum = 0, pos = -1;
int[] toReturn = new int[array.length];
for (int[] a : array) {
pos ;
int length2 = a.length;
for (int x = 0; x < length2; x )
{
sum = a[x];
}
toReturn[pos] = sum;
sum = 0;
}
return toReturn;
}
Затем для печати выходных данных используйте System.out.println(Arrays.toString(calculateSumRow(your_matrix)));
Ответ №2:
Я забыл обновить этот вопрос.
для исправления вывода используйте rez[j] = tab[i][j];
точку с запятой-спасибо
И чтобы исправить «[I@2c7b84de», просто вызовите метод, как poVrsticah(tabela);
Мой окончательный код в конечном итоге выглядит так https://justpaste.it/8gflr