Коллеги, сейчас пишу "костяк" для будущего приложения, которое будет выполнять разные действия с массивами (одномерными, многомерными).
В текущей версии программы после того, как вводишь имя и значение 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();
}
}
}
}
}