我对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 :
我想知道如何将其放入循环中反复询问,直到使用该方法认为输入被接受为止? 此外,因为我是一个相当新的解释它如何重复以及如何从循环返回值将非常感激!
答案 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]+")
)的+
个字符。