2016-10-21 2 views
2

Я новичок в 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(); 

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

Вот пример:

\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 numbers\nEx: X + V\n:"); 
    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]+") && operator.matches("\\+|\\-") && 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 numbers\nEx: X + V\n:"); 
    } 
+0

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

+0

<возможно римское число> – Lenotre

+0

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

Смежные вопросы