我的问题:
我正在尝试在我的方法中处理ArrayIndexOutOfBoundsException
。目前它接收用户输入的字符串,如果它匹配"^[a-zA-Z]*$"
(字母/特殊字符),那么它应该保持循环。数组大小为[26]。当我输入27时,它应该捕获并处理此异常,但它只是抛出错误。
我该如何解决这个问题?
public String checkInput(String userInput) {
try {
while (input.matches("^[a-zA-Z]*$")) {
System.out.println("Please enter a number");
userInput = sc.next();
}
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("The input is invalid, please enter the answer again.");
userInput = sc.next();
}
return userInput;
}
提前致谢
答案 0 :(得分:1)
在Java中,String
的行为与数组不同。它是一个不可变的字符序列。变量只是对象的引用。所以
userInput = sc.next();
不会修改原始字符串。 userInput
变量只是引用一个新字符串和ref。减少前一个字符串的计数。如果它达到0,它就会超出范围,以后会被垃圾收集。
不同地说,代码中的任何内容都不能引发ArrayIndexOutOfBoundsException
。
如果您想控制字符串不超过26,请使用其length
方法:
if (userInput.length() > 26) {
...
}