如何检查字母是否为字母(numberformatexception)

时间:2019-07-12 10:25:56

标签: java

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

我尝试了.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循环,但它只是出现了数字格式异常,我在想也许我可以尝试捕捉?感谢您的帮助

1 个答案:

答案 0 :(得分:2)

纯数字字符串的正则表达式模式为\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);

这种方法将无限循环直到出现纯数字输入为止。