在Java中重复提示,直到字符串中的所有字符都可以加入

时间:2016-02-19 21:54:13

标签: java string loops roman-numerals

我对java很新,并试图制作一个罗马数字计算器。我已完成主要编码,但我想添加检查主字符串中“非法”字符的功能。

我创建了一个名为“ValidCheck”的方法来测试字符串中可接受字符列表中的所有字符。

public static boolean ValidCheck(String letter){
    boolean okay = true;
    for (int i = 0; i < Letters.length; i++){
        if (Letters[i] != letter){
            okay = false;
        }
    }           
    return okay;
}

以下是用户的输入。我希望能够打印错误消息,然后重复原始问题,直到字符串可以接受ValidCheck == true

System.out.print("Type in a Roman Numeral value: ");
String roman = kb.next();
for (int i = 0; i < roman.length(); i++){
    if (ValidCheck(roman.charAt(i) + "") == false){
        System.out.println("Error with input. Unexpected character.");      
    }
}

离。

Type in a Roman Numeral : MMDK

Error with input. Unexpected character.

Type in a Roman Numeral : 

我想知道如何将其放入循环中反复询问,直到使用该方法认为输入被接受为止? 此外,因为我是一个相当新的解释它如何重复以及如何从循环返回值将非常感激!

1 个答案:

答案 0 :(得分:2)

我建议将recv与无限循环结合使用。 java.util.Scanner易于使用并解决了许多常见任务。

示例代码可能如下所示:

Scanner

说明:

  • import java.util.Scanner; public class LoopingInput { public static void main(String[] args) { try (Scanner scanner = new Scanner(System.in)) { for (;;) { System.out.println("Type in a Roman Numeral value: "); String nextLine = scanner.nextLine(); if (!nextLine.matches("[IVXLCDM]+")) { System.out.println("Error with input. Unexpected character."); } // you may want to "return nextLine" or similar in an "else" branch } } } } 是一个Java-8功能,它会自动关闭一个对象 - 即使出现意外情况
  • try (...) {...}是默认输入 - 在大多数情况下是命令行或文件输入
  • System.in等待用户输入新行;并返回该行
  • scanner.nextLine()正在使用正则表达式来验证您的输入。在这种情况下,这非常方便。它会搜索任意数量(nextLine.matches("[IVXLCDM]+"))的+个字符。