一尘不染

StringIndexOutOfBoundsException

java

在使方法在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)

如果有人可以向我解释如何解决此问题,我将不胜感激!就像我说的,我仅在某些输入时才收到此消息。对于其他输入,程序按预期运行。


阅读 222

收藏
2020-12-03

共1个答案

一尘不染

如果已更换

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]);
}
2020-12-03