gpt4 book ai didi

java - 在 Java 中重复提示直到字符串中的所有字符都可以接受

转载 作者:搜寻专家 更新时间:2023-11-01 03:19:19 25 4
gpt4 key购买 nike

我是 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 :

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

最佳答案

我建议将 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
}
}
}
}

解释:

  • try (...) {...} 是 Java-8 的一个特性,它会自动关闭一个对象——即使发生了意想不到的事情
  • System.in 是默认输入 - 在大多数情况下是命令行或文件输入
  • scanner.nextLine() 等待用户输入新行;并返回那一行
  • nextLine.matches("[IVXLCDM]+") 使用正则表达式 来验证您的输入。这在这种情况下非常方便。它搜索任意数量 (+) 的 IVXLCDM 字符。

关于java - 在 Java 中重复提示直到字符串中的所有字符都可以接受,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35515774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com