Лаконичная организация уведомления пользователей об ошибке во время выполнения программы в коде

Вопрос достаточно не професиональный, но все равно хотел бы получить на него ответ так как мне интересно увидеть ваши реализации того как же все таки лучше уведомлять пользователя об ошибках во время выполнения программы. Например сказано ввести число, а он берет и вводит буквы. Суть в том что как все таки сделать наиболее правильную реализацию соответствующей логики в коде, представим что это консольное приложение. Подскажите пожалуйста. Так же я хотел бы уточнить на счет зацикливаний той же логики, к примеру если пользователь сделал что-то не так и мы просим его повторить еще раз, как правильно это реализовать. Подскажите как все это свести до кучи и что-бы код не превратился при этом в сплошной if-else.

Пример того как я написал метод для уведомления

public static String checkInputString(String input){
        if(getErrorMessage(input.replaceAll("[A-Z[a-z]]", "").isEmpty(), "Name must have only letters") && getErrorMessage(input.charAt(0) == Character.toUpperCase(input.charAt(0)), "First letter in the name must be a upper")){
            return input;
        } else {
            return null;
        }
    }


Вспомогательный метод

private static boolean getErrorMessage(boolean isMessage, String message) {
        if(!isMessage) {
            System.out.println(message);
        }
        return isMessage;
    }

Мой цикл

 do{
      userName = UsersInputException.checkInputString(GameHelper.readUserInput("Pleases enter the name of player number " + (i + 1) + ": "));
   } while(userName == null);

Метод из GameHelper

 private static final Scanner INPUT_READER;

 static {
        INPUT_READER = new Scanner(System.in);
        }

 public static String readUserInput(String previewText) {
        System.out.print(previewText);
        return  INPUT_READER.next();
    }

Вот и меня интересует все ли я делаю достаточно адекватно, или нет, если нет то предложите пожалуйста свои реализации соответствующего метода для проверки правильности пользовательского ввода, так-же что-бы этот метод применялся например в каком-то цикле, который не заканчивался бы пока мы не получим от пользователя правильного ввода. Спасибо всем за ответы заранее, не проходите мимо :)


Ответы (1 шт):

Автор решения: Сабир Исламов

Вот мой вариант ответа по организации цикличного ввода (хотя scanner конечно сам умеет читать прям число из инпута, но я его для сокращения времени использовал):

import java.util.Scanner;

public class InputInt {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str;
        do{
            System.out.print("Введите число: ");
            str = scanner.nextLine();

        }while (!isInteger(str));
    }

    private static boolean isInteger(String in){
        try {
            Integer.parseInt(in);
            return true;
        }catch (NumberFormatException e){
            System.out.println("Вы ввели не число, либо использовали не верный формат");
            return false;
        }
    }
}

Но, мне кажется, вопрос всё-таки о вкусах. Хотя могу ошибаться.

→ Ссылка