在使方法在Java中正常工作时,我遇到了一些问题。在程序中,我创建了一个由许多不同长度的不同单词组成的数组。我正在使用的方法应该读取用户输入的字长,字母和位置,然后Java将打印出与这三个参数匹配的所有字(例如,如果用户键入了字长4,字母A和位置2,并打印出长度为4且在位置2包含字母A的单词)。
无论如何,我创建的方法如下所示:
public static void inputMethod(int length, char letter, int position){ for (int index = 0; index < wordTable.length; index++) { if (length == wordTable[index].length() && letter == wordTable[index].charAt(position) ) System.out.println(wordTable[index]); }
对于某些输入,此方法很好用,但是对于其他输入,我会收到如下错误消息:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 5 at java.lang.String.charAt(Unknown Source) at Wordarray.inputMethod(Wordarray.java:153) at Wordarray.main(Wordarray.java:61)
如果有人可以向我解释如何解决此问题,我将不胜感激!就像我说的,我仅在某些输入时才收到此消息。对于其他输入,程序按预期运行。
如果已更换
for (int index = 0; index < wordTable.length; index++) {
与
for (int index = 0; index < length; index++) {
那很可能不是您真正想要的。
更好的方法是这样的:
public static void inputMethod(int length, char letter, int position) { // check if input is valid if(position < length) for (int index = 0; index < wordTable.length; index++) { if (length == wordTable[index].length() && letter == wordTable[index].charAt(position) ) System.out.println(wordTable[index]); }