Задать вопрос
@SevaSava

Почему программа не даёт ввести размеры матрицы?

Коллеги, сейчас пишу "костяк" для будущего приложения, которое будет выполнять разные действия с массивами (одномерными, многомерными).
В текущей версии программы после того, как вводишь имя и значение 1, чтобы продолжить, программа не даёт ввести размеры матрицы. В чём проблема? Направьте на путь истинный)

/*
Предложить пользователю ввести симметричную матрицу (т.е. 2х2, 3х3, 6х6).
Несимметричные (т.е. 3х6, 6х2 и т.п.) - исключить. Найти сумму элементов матрицы.
Найти минимальный и максимальный элемент матрицы. Попытаться использовать методы для
решения задачи (по памяти и изученным основам программирования ранее).
 */

import java.util.Random;
import java.util.Scanner;

public class Multiarrays_Task_Manager {
    private static Scanner scanner = new Scanner(System.in);
    private static String name;
    private static String sex;

    public static void main(String[] args) {
        name = username();
        sex = sex();
        messageRules(name, sex);
        System.out.println();
        System.out.println(name + ", введите размеры матрицы: ");
        int n = 0;
        int m = 0;
        while(n != m){
            scanner.nextLine();
            System.out.println("Введите кол-во столбцов: ");
            if(scanner.hasNextInt()){
                n = scanner.nextInt();
                scanner.nextLine();
                continue;
            }
            else
            {
                System.out.println("Введите корректное число!");
            }
            scanner.nextLine();
            System.out.println("Введите кол-во строк: ");
            if(scanner.hasNextInt()){
                m = scanner.nextInt();
                scanner.nextLine();
                continue;
            }
            else
            {
                System.out.println("Введите корректное число!");
            }
            if(n != m){
                System.out.println("Ваша матрица непропорциональна!");
                System.out.println("Повторите ввод кол-ва строк и столбцов.");
            }
        }

        int[][] matrice = new int[n][m];
        Random random = new Random();
        for(int i = 0; i < n; i++){
            for (int j = 0; j < n; j++){
                matrice[i][j] = random.nextInt(100) + 1;
            }
        }

        System.out.println();
        System.out.println("Ваша матрица: ");

        for(int i = 0; i < n; i++){
            for(int j = 0; j < n; j++){
                System.out.print(matrice[i][j] + " ");
            }
            System.out.println();
        }
    }

    public static String username(){
        String name;
        System.out.println("Здравствуйте. Как Вас зовут?");
        name = scanner.nextLine();
        return name;
    }

    public static String sex(){
        String userSex;
        while (true){
            System.out.println("Какой Ваш пол (введите М или Ж)?");
            userSex = scanner.nextLine();
            if (userSex.equalsIgnoreCase("М") || (userSex.equalsIgnoreCase("Ж"))){
                break;  // выход из цикла, если значение корректно
            }
            else
            {
                System.out.println("Вы ошиблись! Будьте внимательны!");
                System.out.println("Введите буквы М или Ж (русские): ");
            }
        }
        return userSex;
    }

    public static void messageRules(String name, String sex){
        if (sex.equalsIgnoreCase("М")){
            System.out.println("Уважаемый " + name + "!");
            //userSex = 0; какой-нибудь флаг для пола (для правильных склонений и обращений)
        }
        if (sex.equalsIgnoreCase("Ж")){
            System.out.println("Уважаемая " + name + "!");
        }
        int agreement;
        while (true) {
            System.out.println("Данная программа предложит Вам задать размеры матрицы.");
            System.out.println("Матрица должна быть пропорциональной: 2x2, 6x6, 10x10 и т.д..");
            System.out.println("После этого будет определена сумма элементов матрицы, определены");
            System.out.println("минимальный и максимальный элемент данной матрицы.");
            System.out.println("Вы готовы продолжить? Если да, введите 1, если нет - 0:");
            if (scanner.hasNextInt()){
                agreement = scanner.nextInt();
                scanner.nextLine();
                if (agreement == 0){
                    System.out.println("Жаль. Программа завершена. Спасибо и всего доброго, " + name);
                    System.exit(0);
                } else if (agreement == 1){
                    System.out.println("Отлично! Продолжаем, " + name + "!");
                    break;
                } else{
                    System.out.println("Введите корректное число (0 или 1)!");
                    scanner.nextLine();
                }
            }
        }
    }
}
  • Вопрос задан
  • 67 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
xez
@xez Куратор тега Java
TL Junior Roo
int n = 0;
int m = 0;
while (n != m) { // n всегда равно m
        ...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы