我有我的代码,它能够自行检查字母,但是当我将它们放在同一字符串中时,它只会崩溃

我已经尝试过.matches方法,而香港专业教育学院也曾尝试过.contains,我认为这是最合适的,但是我不确定什么是最适合使用的。

   String regex = "^[a-zA-Z]+$";

   System.out.println("How many dice to you want to roll?");
   String DiceChoice = scan.nextLine();



   while (DiceChoice.indexOf(".")!=-1 || DiceChoice.matches(regex)) {
       System.out.println("Please enter a number without a decimal or
       letter");
       DiceChoice = s.nextLine();
   }
   int DiceChoiceInt = Integer.parseInt(DiceChoice);


当我输入“ a”就可以了,或者是“。”很好,但是当我输入“ 4a”时,这就是例外。

我希望它可以在字符串中的某个位置找到字母并进入while循环,但是它只是出现了数字格式异常,我在想也许可以尝试捕获吗?任何帮助表示赞赏

最佳答案

纯数字字符串的正则表达式模式为\d+,所以为什么不检查正匹配呢?

String diceChoice;

do {
    diceChoice = scan.nextLine();
    if (diceChoice.matches("\\d+")) break;
    System.out.println("Please enter a number-only choice");
} while (true);

int diceChoiceInt = Integer.parseInt(diceChoice);


该方法将无限循环,直到发生纯数字输入为止。

08-04 02:13