我有我的代码,它能够自行检查字母,但是当我将它们放在同一字符串中时,它会崩溃
我尝试了.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循环,但它只是出现了数字格式异常,我在想也许我可以尝试捕捉?感谢您的帮助
答案 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);
这种方法将无限循环直到出现纯数字输入为止。