索引超出范围错误-1(==和!=)

时间:2014-10-20 02:40:59

标签: java string

我试图让一个方法返回短语中n个字母长的单词数。我一直得到字符串索引超出范围:-1错误

public static int nCount(String phrase, int n){
    String phrase3 = phrase;
    int phrase3Length = phrase3.length();
    int counter = 0;
    int currentWordLength = 0;
    int i = 0; //words checked
    int numberOfWords = words(phrase); //already have a method that checks for # of words

    while (numberOfWords > i) {

        while (phrase3.indexOf(" ") != 0) {
            phrase3 = phrase3.substring(1);   //line of trouble!! (index out of range -1)
            currentWordLength++;
        }

        while (phrase3.indexOf(" ") == 0) {
            phrase3 = phrase3.substring(1);
        } 

        if (currentWordLength == n) {
            counter++;
            i++;
            currentWordLength = 0;
        } else {
            i++;
            currentWordLength = 0;
        }
    }

2 个答案:

答案 0 :(得分:0)

当phrase3为空字符串时,您将收到错误。

phrase3.indexOf(" ") == -1 != 0

所以这个条件过去了。

然后substring函数失败。

答案 1 :(得分:0)

您的问题行是两个问题。

  • 在Java字符串索引中从0开始。当您的String少于1个字符时,您会收到错误IndexOutOfBoundsException
  • 像Petar写的那样,indexOf在String中没有发现时会返回-1。根据您似乎想要实现的目标,您应该检查== -1而不是== 0

另外,为了简化代码,您应该考虑使用split()