арифметика 2d массивов java

#java #arrays

Вопрос:

Ребята, я изо всех сил готовлюсь к экзамену с помощью 2d-массива прошлых экзаменационных работ. Я должен написать метод

 sumr static (int[][] v)
 

это возвращает 2d массив, состоящий из 2 строк, и записи в первой строке составляют суммы v, а вторая строка совпадает с первой строкой v. Например:

 a = {{2,3,3}, {1,3}, {1,2}}
 

метод возвращает 2d массив

 b = {{8,4,3},{2,3,3}}
 

Сначала я пытаюсь заставить свой метод возвращать 2d-массив, но у меня была ошибка незаконного начала выражения, теперь у меня есть следующий код, но последний элемент не печатается, а элементы a печатаются все в строке, а не матричным способом… Пожалуйста, ребята, помогите мне, мой экзамен завтра.

 public class Sum
{

    //  int[][] a = {{2, 3, 3}, {1, 3}, {1, 2}};


    public void sumr(int[][] v)
    {
        for(int rows = 0; rows < v.length; rows  ){
            for(int columns = 0; columns < v.length; columns  ){
                int result = v[rows][columns];
                System.out.print(result   " ");
                //return [][] resu<
            }
        }
    }

    public int getCount(int[][] Array)
    {
        int result = 0; //temp location to store current count
        for (int i = 0;i <= Array.length -1;i  ){//loop around first array
            //get the length of all the arrays in the first array
            //and add them onto the temp variable
            result  = Array[i].length; 
        }
        return resu<
    }

}
 

Комментарии:

1. какой синтаксис вы использовали, когда пытались вернуть массив «2d» из этого метода?

2. Я добавил тег домашней работы (это учебная вещь…)

3. Я использовал это: public int [][] sumr(int[][] v)

4. это прокомментированное //return[][] result предложение не является действительным. Если вы хотите вернуть 2d-массив, вы должны создать 2d-массив, каждый из массивов строк, установить значения… а потом верните его. В любом случае, что вы хотите вернуть? Я имею в виду: каково определение результата?

5. Теперь я понимаю, каким должен быть результат.

Ответ №1:

Во внешнем цикле (после внутреннего цикла) включают:

 System.out.println(); // go to next line!
 

И проверьте длину внутреннего массива!!

 int[] innerArray = v[rows];
for(int columns = 0; columns < innerArray.length; columns  ){
 

Это:

 public void sumr(int[][] v)
{
    for(int rows = 0; rows < v.length; rows  ){
        int[] innerArray = v[rows];
        for(int columns = 0; columns < innerArray.length; columns  ){
            int result = v[rows][columns];
            System.out.print(result   " ");
            //return [][] resu<
        }
        System.out.println(); // go to next line!
    }
}
 

Как только вы сможете повторить:

Вы должны создать массив из двух элементов:

1-й элемент: «суммированный массив» 2-й элемент: то же, что и v[0]

Вы должны построить этот результат.

Вы должны построить 1-й элемент, повторяя v, как вы пытаетесь сделать. Для каждой строки (внешний цикл) вы будете перебирать строку и суммировать ее значения. Таким образом, после обработки каждой строки (после внутреннего цикла) у вас будет суммированное значение. Это значение должно быть помещено в «суммированный массив».

Затем вы можете напрямую построить массив результатов, присвоив построенную сумму ее первому месту, а v[0] — второму.

Но я еще не пишу код, чтобы позволить вам это сделать 😉

Комментарии:

1. Гелиос, компилятор не позволяет мне использовать 3-й цикл for, говоря: «Столбец уже определен в sumr (int [] []), будет ли все еще нормально, если я просто изменю его на другое имя? Большое вам спасибо за вашу помощь.

2. Арррг!!! Моя ошибка, я повторил строку вместо того, чтобы заменить ее! 🙂 Я все исправлю прямо сейчас…

3. На самом деле то, что я пытаюсь сделать, — это перебор 2d-массива, то есть у меня должно быть два форса, а не три, хе-хе. В этих случаях не бойтесь спрашивать «для чего нужен третий цикл?» или «почему вы объявляете переменную дважды?». Важно то, что вы понимаете, что делает каждая вещь.