#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-массива, то есть у меня должно быть два форса, а не три, хе-хе. В этих случаях не бойтесь спрашивать «для чего нужен третий цикл?» или «почему вы объявляете переменную дважды?». Важно то, что вы понимаете, что делает каждая вещь.