Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2018, 21:30   #1
kris14
Пользователь
 
Регистрация: 25.10.2017
Сообщений: 29
По умолчанию Как правильно сократить код?

Здравствуйте, написала код, который работает (ура!), но не могу понять, как его сократить...Понимаю, что нужно использовать цикл, но как конкретно его прописать не пойму, заклинило и все...

Код:
package com.company;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int[][] matrixA;
        matrixA = new int[5][5];

        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5; j++) {
                matrixA[i][j] = (int) (Math.random() * 10);
                System.out.print(matrixA[i][j] + "\t");
            }
            System.out.println();
        }
            
//скорее всего, сюда, вместо всего нижеперечисленного, нужно написать что-то вроде    for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { а вот дальше ступор

                int sum = matrixA[0][0] + matrixA[0][1] + matrixA[0][2] + matrixA[0][3] + matrixA[0][4];
        System.out.print(sum + " ");
        int sum1 = matrixA[1][0] + matrixA[1][1] + matrixA[1][2] + matrixA[1][3] + matrixA[1][4];
        System.out.print(sum1 + " ");
        int sum2 = matrixA[2][0] + matrixA[2][1] + matrixA[2][2] + matrixA[2][3] + matrixA[2][4];
        System.out.print(sum2 + " ");
        int sum3 = matrixA[3][0] + matrixA[3][1] + matrixA[3][2] + matrixA[3][3] + matrixA[3][4];
        System.out.print(sum3 + " ");
        int sum4 = matrixA[4][0] + matrixA[4][1] + matrixA[4][2] + matrixA[4][3] + matrixA[4][4];
        System.out.println(sum4 + " ");


        int max = Math.max(
                Math.max(sum, sum1),
                Math.max(sum2, sum3));
        System.out.println("Максимальная сумма элементов строк: " + max);

        int sum5 = matrixA[0][0] + matrixA[1][0] + matrixA[2][0] + matrixA[3][0] + matrixA[4][0];
        System.out.print(sum5 + " ");
        int sum6 = matrixA[0][1] + matrixA[1][1] + matrixA[2][1] + matrixA[3][1] + matrixA[4][1];
        System.out.print(sum6 + " ");
        int sum7 = matrixA[0][2] + matrixA[1][2] + matrixA[2][2] + matrixA[3][2] + matrixA[4][4];
        System.out.print(sum7 + " ");
        int sum8 = matrixA[0][3] + matrixA[1][3] + matrixA[2][3] + matrixA[3][3] + matrixA[4][3];
        System.out.print(sum8 + " ");
        int sum9 = matrixA[0][4] + matrixA[1][4] + matrixA[2][4] + matrixA[3][4] + matrixA[4][4];
        System.out.println(sum9 + " ");


        int max1 = Math.max(
                Math.max(sum5, sum6),
                Math.max(sum7, sum8));
        System.out.println("Максимальная сумма элементов столбцов: " + max1);



    }


}
kris14 вне форума Ответить с цитированием
Старый 10.02.2018, 22:55   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Примерно:
Код:
for (int i = 0; i < 5; i++) {
    int sum = 0;
    for (int j = 0; j < 5; j++)
        sum += matrixA[i][j];
    System.out.println(sum + " ");
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 16.02.2018, 16:00   #3
kris14
Пользователь
 
Регистрация: 25.10.2017
Сообщений: 29
По умолчанию

Спасибо большое!
Ещё возник вопрос. В итоге, на выходе программа из-за циклов, получается очень длинной, потому что каждое действие выводится, пыталась ставить System.out.print после завершения цикла, но тогда там всё красным подчеркивает, подскажите, пожалуйста, что можно сделать.

Код:
package com.company;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int[][] matrixA;
        matrixA = new int[5][5];

        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5; j++) {
                matrixA[i][j] = (int) (Math.random() * 10);
                System.out.print(matrixA[i][j] + "\t");
            }
            System.out.println();
        }

        for (int i = 0; i < 5; i++) {
            int sum = 0;
            for (int j = 0; j < 5; j++) {
                sum += matrixA[i][j];
                System.out.println(sum + " ");
            }

            System.out.println("Максимальная сумма элементов строк: " + sum);
        }
        for (int i = 0; i < 5; i++) {
            int sum1 = 0;
            for (int j = 0; j < 5; j++) {
                sum1 += matrixA[i][j];
                System.out.println(sum1 + " ");

        }
        System.out.println("Максимальная сумма элементов столбцов: " + sum1);



    }

}}

_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор
Изображения
Тип файла: jpg 111-horz.jpg (68.9 Кб, 31 просмотров)

Последний раз редактировалось Serge_Bliznykov; 16.02.2018 в 16:31.
kris14 вне форума Ответить с цитированием
Старый 16.02.2018, 16:38   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

не очень понял.

может быть, так?
Код:
 public static void main(String[] args) {
        int[][] matrixA;
        matrixA = new int[5][5];

        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5; j++) {
                matrixA[i][j] = (int) (Math.random() * 10);
                System.out.print(matrixA[i][j] + "\t");
            }
            System.out.println();
        }

        int maxsum_row=-1, maxsum_col=-1;
        for (int i = 0; i < 5; i++) {
            sum = 0;
            for (int j = 0; j < 5; j++) {
                sum += matrixA[i][j];
            }
	    if(sum>maxsum_row){
		maxsum_row=sum;
	    }
        }
        System.out.println("Максимальная сумма элементов строк: " + maxsum_row);

        for (int i = 0; i < 5; i++) {
            int sum = 0;
            for (int j = 0; j < 5; j++) {
                sum += matrixA[i][j];

            }
	    if(sum>maxsum_col){
		maxsum_col=sum;
	    }

        }
        System.out.println("Максимальная сумма элементов столбцов: " + maxsum_col);
    }
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.02.2018, 17:38   #5
kris14
Пользователь
 
Регистрация: 25.10.2017
Сообщений: 29
По умолчанию

Всё, поняла, ступила сильно Спасибо Вам большое!
kris14 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
подскажите, как сократить код? beegl Общие вопросы Delphi 9 26.04.2016 13:23
Как сократить код? Вадим12091965 Microsoft Office Excel 11 19.09.2013 20:39
Как сократить код Вадим12091965 Microsoft Office Excel 6 28.10.2012 11:04
Как можно сократить код jocry Общие вопросы Delphi 2 20.01.2009 08:35