Есть массив:
int[][] array = new int[2][3]; array[0][0] = 1; array[0][1] = 2; array[1][0] = 3; array[1][1] = 4; array[0][2] = 5; array[1][2] = 6;Используя цикл for, вычислите сумму каждой строки первого массива и запишите результат в новый массив.
Можете помочь кодом для новичка, т.е простое решение предложить?
Kromster
13.5k12 золотых знаков43 серебряных знака72 бронзовых знака
задан 15 июл 2018 в 13:43
2
Если легкий вариант и не использую Stream API, то вам подойдет такой вариант:
public class Application {
public static void main(String[] args) {
int[][] array = new int[2][3];
array[0][0] = 1;
array[0][1] = 2;
array[1][0] = 3;
array[1][1] = 4;
array[0][2] = 5;
array[1][2] = 6;
int[] newArray = new int[array.length];
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
newArray[i] += array[i][j];
}
}
Arrays.stream(newArray).forEach(System.out::println);
}
}
ответ дан 15 июл 2018 в 14:17
3
Вот например мы заполняем массив, так же и складывайте элементы массива.
Вот пример заполнения и вывода.
package array;
/**
*
* @author vvm
*/
public class ArrayCount {
public static void main(String[] args) {
int[][] array = new int[2][3];
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
array[i][j] = i+1;
}
}
for (int i = 0; i < 2; i++) {
System.out.println("");
for (int j = 0; j < 3; j++) {
System.out.print(" array[" + i + "]" + "[" + j + "]" + " = " + array[i][j]);
}
}
}
}
array[i][j] — это ваш элемент массива, то что хранится в ячейке массива с номером ячейки [i][j]. Как в табличке. Только это условно. В памяти компьютера массив хранится по другому. Строки и столбцы — это условность.
ответ дан 15 июл 2018 в 15:20
попробуйте так
int rowsCount = array[0].length;
for(int row = 0; row < rowsCount; row++)
{
int sum = 0;
for(int i = 0; i < array.length; i++)
{
int cell = array[i][row];
sum += cell;
// debug (remove next line if not needed!)
System.out.print(cell + (i < array.length - 1 ? " + " : " = "));
}
System.out.println(sum);
}
ответ дан 16 июл 2018 в 6:49
RamizRamiz
1,6049 серебряных знаков16 бронзовых знаков
Можно проще сделать с помощью stream:
int[][] array = new int[2][3];
array[0] = new int[]{1, 2, 5};
array[1] = new int[]{3, 4, 6};
int[] sums = Arrays.stream(array)
// получаем сумму каждой строки
.mapToInt(row -> Arrays.stream(row).sum())
// возвращаем массив
.toArray();
System.out.println(Arrays.toString(sums)); // [8, 13]
ответ дан 10 дек 2020 в 21:35
I am writing some code to calculate the total of each row in the array.
public static int sum(int[][] array) {
int total = 0;
for (int i = 0; i < array.length; i++) {
for (int k = 0; k < array[i].length; k++) {
total = total + array[i][k];
}
}
return total;
}
The code above is to work out the total sum for all the numbers in the two dimensional array however I am trying to work out to the total for each individual row for the array.
public static int[] rowSums(int[][] array) {
}
I am very unsure on what to do for the code to work out the 2D array for each row.
asked Mar 21, 2018 at 12:37
2
Did you mean something like this :
public static int[] sum(int[][] array) {
//create an array of size array.length
int[] result = new int[array.length];
int total;
//Loop over the first dimension
for (int i = 0; i < array.length; i++) {
total = 0;//Make sure to re-initialize the total in each iteration
//For each row calculate the sum and store it in total
for (int k = 0; k < array[i].length; k++) {
total += array[i][k];
}
//When you finish put the result of each row in result[i]
result[i] = total;
}
return result;
}
Example
System.out.println(
Arrays.toString(sum(new int[][]{{1, 1, 1}, {2, 2}, {3, 3}}))
);
Outputs
[3, 4, 6]
answered Mar 21, 2018 at 12:41
Youcef LAIDANIYoucef LAIDANI
54.8k15 gold badges88 silver badges139 bronze badges
3
If you are using Java 8 you can do it in the following way:
int[] ar = Arrays.stream(new int[][]{{1,2},{3,5}}) // source
.mapToInt(arr -> IntStream.of(arr).sum()) // sum inner array
.toArray(); // back to int[]
System.out.println(Arrays.toString(ar)); // print the array
Without stream:
int[][] arr = {{1,2},{3,5}};
// create a array that stores the total of each inner array
int[] total = new int[arr.length];
// first loop for outer array
for (int i = 0; i < arr.length; i++) {
// loop for inner array
for (int k = 0; k < arr[i].length; k++) {
// since default value of total[i] is 0, we can directly use +=
total[i] += arr[i][k];
}
}
// print the array
System.out.println(Arrays.toString(total));
answered Mar 21, 2018 at 12:41
Aniket SahrawatAniket Sahrawat
12.3k3 gold badges41 silver badges67 bronze badges
Based on @YFC_L answer, but using the enhanced loop:
public static int[] sum2(int[][] array) {
//create an array of size based of how many rows the array has
int[] result = new int[array.length];
int rowIndex = 0;
//Loop over each row
for (int[] row : array) {
int total = 0;
//Calculate the sum of the row
for (int n : row) {
total += n;
}
//Store the sum in the result
result[rowIndex++] = total;
}
return result;
}
Also, this method can be tested in the exatelly same way:
public static void main(String[] args) {
System.out.println(
Arrays.toString(sum2(new int[][]{{1, 1, 1}, {2, 2}, {3, 3}}))
);
}
and, of course the output is the same:
[3, 4, 6]
answered Mar 21, 2018 at 13:15
zlakadzlakad
1,3141 gold badge9 silver badges16 bronze badges
0
Try this with slight modification with your code
public static int[] sum(int[][] array) {
List<Integer> rowTotal = new ArrayList<>();
int total = 0;
for (int i = 0; i < array.length; i++) {
for (int k = 0; k < array[i].length; k++) {
total = total + array[i][k];
}
rowTotal.add(total);
total = 0;
}
return rowTotal.stream().mapToInt(i->i).toArray();
}
answered Mar 21, 2018 at 12:44
public static List<Integer> sum(int[][] array) {
List<Integer> total = new ArrayList<>();
for (int i = 0; i < array.length; i++) {
int sum = 0;
for (int k = 0; k < array[i].length; k++) {
sum = sum + array[i][k];
}
total.add(sum);
}
return total;
}
In case if you need to use int[] after getting result,
List<Integer> total = sum(ar);
Integer[] result = total.toArray(new Integer[0]);
Use result object for further use.
answered Mar 21, 2018 at 12:53
MayurMayur
5662 gold badges5 silver badges26 bronze badges
2
|
0 / 0 / 0 Регистрация: 16.10.2012 Сообщений: 10 |
|
|
1 |
|
Сумма элементов в двумерном массиве28.11.2012, 13:20. Показов 41963. Ответов 4
Добрый день, вот дали задачку на массивы, а я только с циклами дай боже разобрался, а уже пора сдавать((( не могли бы вы мне помочь? Дан двумерный массив целых чисел. Найти сумму элементов:
0 |
|
Vortal 104 / 104 / 27 Регистрация: 11.08.2011 Сообщений: 301 |
||||
|
28.11.2012, 16:24 |
2 |
|||
|
А размер массива самому придумать надо? Добавлено через 12 минут
Сделал с цифрами для наглядности, все это можно переделать для масиива типа Добавлено через 38 секунд
2 |
|
0 / 0 / 0 Регистрация: 16.10.2012 Сообщений: 10 |
|
|
28.11.2012, 18:22 [ТС] |
3 |
|
так оперативно! Спасибо большое !!!
0 |
|
Vortal 104 / 104 / 27 Регистрация: 11.08.2011 Сообщений: 301 |
||||
|
28.11.2012, 19:08 |
4 |
|||
|
Щас сброшу с неопреденным массивом и чуть чуть оптимизированный, хотя если надо код новичка, то первый даже лучше подойдет, видно карявости Добавлено через 41 минуту
Вот более красивая форма, теперь будет работать в любых условиях.
1 |
|
0 / 0 / 0 Регистрация: 18.10.2012 Сообщений: 23 |
|
|
30.11.2012, 19:00 |
5 |
|
ага, именно с «корявостями»
0 |
Вопрос:
Я пишу код, чтобы вычислить общее количество каждой строки в массиве.
public static int sum(int[][] array) {
int total = 0;
for (int i = 0; i < array.length; i++) {
for (int k = 0; k < array[i].length; k++) {
total = total + array[i][k];
}
}
return total;
}
Вышеприведенный код состоит в том, чтобы выработать общую сумму для всех чисел в двумерном массиве, однако я пытаюсь разобраться в сумме для каждой отдельной строки для массива.
public static int[] rowSums(int[][] array) {
}
Я очень не уверен в том, что делать, чтобы код работал над 2D-массивом для каждой строки.
Ответ №1
Если вы используете Java 8, вы можете сделать это следующим образом:
int[] ar = Arrays.stream(new int[][]{{1,2},{3,5}}) // source
.mapToInt(arr -> IntStream.of(arr).sum()) // sum inner array
.toArray(); // back to int[]
System.out.println(Arrays.toString(ar)); // print the array
Без потока:
int[][] arr = {{1,2},{3,5}};
// create a array that stores the total of each inner array
int[] total = new int[arr.length];
// first loop for outer array
for (int i = 0; i < arr.length; i++) {
// loop for inner array
for (int k = 0; k < arr[i].length; k++) {
// since default value of total[i] is 0, we can directly use +=
total[i] += arr[i][k];
}
}
// print the array
System.out.println(Arrays.toString(total));
Ответ №2
Вы имели в виду что-то вроде этого:
public static int[] sum(int[][] array) {
//create an array of size array.length
int[] result = new int[array.length];
int total;
//Loop over the first dimension
for (int i = 0; i < array.length; i++) {
total = 0;//Make sure to re-initialize the total in each iteration
//For each row calculate the sum and store it in total
for (int k = 0; k < array[i].length; k++) {
total += array[i][k];
}
//When you finish put the result of each row in result[i]
result[i] = total;
}
return result;
}
пример
System.out.println(
Arrays.toString(sum(new int[][]{{1, 1, 1}, {2, 2}, {3, 3}}))
);
Выходы
[3, 4, 6]
Ответ №3
На основе ответа @YFC_L, но используя расширенный цикл:
public static int[] sum2(int[][] array) {
//create an array of size based of how many rows the array has
int[] result = new int[array.length];
int rowIndex = 0;
//Loop over each row
for (int[] row : array) {
int total = 0;
//Calculate the sum of the row
for (int n : row) {
total += n;
}
//Store the sum in the result
result[rowIndex++] = total;
}
return result;
}
Кроме того, этот метод может быть проверен exatelly таким же образом:
public static void main(String[] args) {
System.out.println(
Arrays.toString(sum2(new int[][]{{1, 1, 1}, {2, 2}, {3, 3}}))
);
}
и, конечно, результат тот же:
[3, 4, 6]
Ответ №4
public static List<Integer> sum(int[][] array) {
List<Integer> total = new ArrayList<>();
for (int i = 0; i < array.length; i++) {
int sum = 0;
for (int k = 0; k < array[i].length; k++) {
sum = sum + array[i][k];
}
total.add(sum);
}
return total;
}
Если вам нужно использовать int [] после получения результата,
List<Integer> total = sum(ar);
Integer[] result = total.toArray(new Integer[0]);
Используйте объект результата для дальнейшего использования.
Ответ №5
Попробуйте это с небольшими изменениями с кодом
public static int[] sum(int[][] array) {
List<Integer> rowTotal = new ArrayList<>();
int total = 0;
for (int i = 0; i < array.length; i++) {
for (int k = 0; k < array[i].length; k++) {
total = total + array[i][k];
}
rowTotal.add(total);
total = 0;
}
return rowTotal.stream().mapToInt(i->i).toArray();
}
5 ответов
Если вы используете Java 8, вы можете сделать это следующим образом:
int[] ar = Arrays.stream(new int[][]{{1,2},{3,5}}) // source
.mapToInt(arr -> IntStream.of(arr).sum()) // sum inner array
.toArray(); // back to int[]
System.out.println(Arrays.toString(ar)); // print the array
Без потока:
int[][] arr = {{1,2},{3,5}};
// create a array that stores the total of each inner array
int[] total = new int[arr.length];
// first loop for outer array
for (int i = 0; i < arr.length; i++) {
// loop for inner array
for (int k = 0; k < arr[i].length; k++) {
// since default value of total[i] is 0, we can directly use +=
total[i] += arr[i][k];
}
}
// print the array
System.out.println(Arrays.toString(total));
Aniket Sahrawat
21 март 2018, в 10:32
Поделиться
Вы имели в виду что-то вроде этого:
public static int[] sum(int[][] array) {
//create an array of size array.length
int[] result = new int[array.length];
int total;
//Loop over the first dimension
for (int i = 0; i < array.length; i++) {
total = 0;//Make sure to re-initialize the total in each iteration
//For each row calculate the sum and store it in total
for (int k = 0; k < array[i].length; k++) {
total += array[i][k];
}
//When you finish put the result of each row in result[i]
result[i] = total;
}
return result;
}
пример
System.out.println(
Arrays.toString(sum(new int[][]{{1, 1, 1}, {2, 2}, {3, 3}}))
);
Выходы
[3, 4, 6]
YCF_L
21 март 2018, в 10:01
Поделиться
На основе ответа @YFC_L, но используя расширенный цикл:
public static int[] sum2(int[][] array) {
//create an array of size based of how many rows the array has
int[] result = new int[array.length];
int rowIndex = 0;
//Loop over each row
for (int[] row : array) {
int total = 0;
//Calculate the sum of the row
for (int n : row) {
total += n;
}
//Store the sum in the result
result[rowIndex++] = total;
}
return result;
}
Кроме того, этот метод может быть проверен exatelly таким же образом:
public static void main(String[] args) {
System.out.println(
Arrays.toString(sum2(new int[][]{{1, 1, 1}, {2, 2}, {3, 3}}))
);
}
и, конечно, результат тот же:
[3, 4, 6]
zlakad
21 март 2018, в 11:14
Поделиться
public static List<Integer> sum(int[][] array) {
List<Integer> total = new ArrayList<>();
for (int i = 0; i < array.length; i++) {
int sum = 0;
for (int k = 0; k < array[i].length; k++) {
sum = sum + array[i][k];
}
total.add(sum);
}
return total;
}
Если вам нужно использовать int [] после получения результата,
List<Integer> total = sum(ar);
Integer[] result = total.toArray(new Integer[0]);
Используйте объект результата для дальнейшего использования.
Mayur
21 март 2018, в 10:10
Поделиться
Попробуйте это с небольшими изменениями с кодом
public static int[] sum(int[][] array) {
List<Integer> rowTotal = new ArrayList<>();
int total = 0;
for (int i = 0; i < array.length; i++) {
for (int k = 0; k < array[i].length; k++) {
total = total + array[i][k];
}
rowTotal.add(total);
total = 0;
}
return rowTotal.stream().mapToInt(i->i).toArray();
}
Sasikumar Murugesan
21 март 2018, в 10:04
Поделиться
Ещё вопросы
- 0JQuery диалог закрывается при переходе на VB код
- 1Использование Writer для отправки электронного письма с корейским текстом выводит мусор
- 1Построение запросов по шагам приводит к дублированию даже при использовании Distinct ()
- 1API обнаружения формы: «DOMException: источник портит происхождение»
- 0как прекратить действия с помощью JavaScript
- 0MySQL запрос, который меняет идентификатор команды на имя команды и делает не пустым
- 1Выражение Linq из Lambda: укажите параметр явно
- 1Чтение сжатого файла NumPy во время «с open () как f»
- 0соответствие html <form> с регулярным выражением Python, кроме «get»
- 0Экспресс и Джейд: цикл и создание динамических идентификаторов
- 0Использование пакетной переменной в запросе sqlcmd
- 1Как извлечь данные из CDATA в Python и BeautifulSoup?
- 1Лучший способ хранить данные временно?
- 1Эффективный способ вычисления матрицы расстояний в NumPy
- 0добавление данных в таблицу из базы данных
- 0ZF2 & Doctrine2 getServiceConfig функция подключения к фабрикам
- 1JavaScript — отправка электронной почты с использованием AWS SES
- 1ImportError: нет модуля с именем textract
- 0Обновление отдельных тегов span, начиная с x секунд
- 0Сбор продукта и фильтр Magento
- 0как перетащить div в другой div и после перетаскивания div не двигайтесь с помощью jQuery
- 1удаленная отладка Visual Studio 2010: запустить внешнюю программу: каталог не существует
- 0Назначение события клика нескольким элементам с разными параметрами
- 0Как получить свойство родительского объекта внутри дочернего класса в php?
- 0загрузить файл в Yii, не показывая имя / путь к изображению
- 1Ошибка при преобразовании кадра данных pandas в спарк Dataframe
- 1Как управлять видимостью контекстной вкладки ленты WPF 4.5 с помощью доступности определенного элемента управления в представлении Prism (+ MEF) с использованием MVVM?
- 1Как открыть ссылки в новом окне браузера с помощью ie 11
- 1Создание строки из столбца панды и данных строки
- 0Выражение с участием модульных возведения в степень в C ++
- 0javascript / css езда на велосипеде изображений и контента галерея — первая небольшая часть моего сценария не работает
- 0Добавить или удалить класс Css, когда входное значение равно нулю или не равно нулю
- 0HTML кодирование и PHP
- 0Как установить опцию csrf в symfony
- 0Транспортир sendKeys возвращает NoSuchElementError
- 1Использование операторов Node.JS внутри грамматики PEG.js
- 0Неправильное сравнение строк с использованием strtok ()
- 0Показать страницу просмотра с результатами группы из контроллера
- 1c # Как конвертировать объект в XML
- 0Сохранить несколько данных в массиве обслуживания из контроллера?
- 1Не могу получить содержимое некоторых табличных данных с веб-страницы
- 0Установка CSS для Cgridview в YII
- 0Как использовать app / Resources / public в Symfony2
- 1Выпуск JComboBox
- 0сумасшедшие сообщения об ошибках компилятора C ++ о конструкторе копирования из MinGW32
- 0Аргументы не проходят через мой сервис между контроллерами
- 0Доступ к wiringPi (GPIO) из Java через JNI
- 1Проблема прозрачности с opengl / lwjgl
- 1как ссылаться на дочерний элемент на клонированном элементе
- 1Как вернуть ключи карты в соответствии с условием?

.