Зацикливание нескольких входных данных сканера до определенного ввода

#java #java.util.scanner #user-input #variable-assignment

#java #java.util.scanner #пользовательский ввод #назначение переменной

Вопрос:

Я новичок в Java, и я выполняю это задание для romanCalculator. В настоящее время я выполняю часть вычислений, но у меня возникла проблема с некоторыми запрошенными правилами.

Если входные данные неверны, должна быть выведена ошибка.

Итак, это одно из правил, и это единственно возможные входные данные.

 <possible Roman number> <operator> <possible Roman number>
  

или

 <possible Roman number> <operator> <possible Roman number>
  

или

 .
  

Первые 2 просты для понимания, и . заключается в выходе из программы.

Это все, что я мог бы сделать с моими знаниями:

 Scanner in = new Scanner(System.in);

    String firstRoman = in.next();
    String operator = in.next();
    String secondRoman = in.next();
  

Он запрашивает только один раз и только 1 форму ввода.
Я не могу понять, как применить это к запрошенному, я был бы признателен за любую помощь. Спасибо!

Вот пример:

 begin{ipoutput} XX end{ipoutput}
begin{ipinput} *xii

begin{ipinput} /vi end{ipinput}
begin{ipoutput} XL

begin{ipoutput} MCDXLV end{ipoutput}
begin{ipinput} .
  

Ответ №1:

     Scanner in = new Scanner(System.in);
    String input = "";
    System.out.println("Enter your roman numbersnEx: X   Vn:");
    while(!(input = in.nextLine()).equals("."))
    {
        //assuming splitting the input around whitespace we can do the following
        String[] userInput = input.split("\s ");
        if(userInput.length == 3)
        {
            String firstRoman = userInput[0];
            String operator = userInput[1];
            String secondRoman = userInput[2];
            if(firstRoman.matches("[MCDXLV] ") amp;amp; operator.matches("\ |\-") amp;amp; secondRoman.matches("[MCDXLV] "))
            {
                //we have some valid things to work with let's continue
                System.out.println("Valid input - "   input);
            }
            else{
                System.out.println("Invalid input - "   input);
            }
            //do your thing
        }
        else{
            System.out.println("Invalid input - "   input);
        }
        System.out.println("Enter your roman numbersnEx: X   Vn:");
    }
  

Комментарии:

1. Большое вам спасибо за помощь, но я написал неправильный второй возможный вариант. это должно быть так

2. Как и в примере, это будет работать с последним ответом, который я получил от предыдущей функции.