Java 程序正在运行,但出现错误,字符串索引超出范围:-1

Java 程序正在运行,但出现错误,字符串索引超出范围:-1,java,Java,这是我在这里的第一篇帖子,顺便说一句,我的老师给全班同学布置了一个编程作业,我们需要做一个回文程序,我能做,但我想消除错误,你能解释一下为什么会有错误,我如何消除错误吗 import java.io.*; public class AssignmentInCopro {public static void main (String [] args) throws IOException {BufferedReader x = new BufferedReader(new Input

这是我在这里的第一篇帖子,顺便说一句,我的老师给全班同学布置了一个编程作业,我们需要做一个回文程序,我能做,但我想消除错误,你能解释一下为什么会有错误,我如何消除错误吗

import java.io.*;

public class AssignmentInCopro 

{public static void main (String [] args) throws IOException
    {BufferedReader x = new BufferedReader(new InputStreamReader(System.in));

    String word = "";

    System.out.print("Please enter the word you want to see in reverse: ");
    word = x.readLine();

    int wordLength = word.length(); 

    while (wordLength >=0)
    {
    char letter = word.charAt(wordLength - 1);
    System.out.print(letter);
    wordLength--;
    }
    }
}

当您的循环包含索引0时出错。如果
字长
为零,那么您将查找
字符(-1)
,并得到异常:

将代码更改为:

while (wordLength >0)
错误消失了

 while (wordLength >=0)
当wordLength=0时,这会导致错误,然后
char letter=word.charAt(wordLength-1)
实际上是char
letter=word.charAt(0-1)

这应该是一个条件,或者你可以这样写你的循环-

int wordLength = word.length() - 1;
while (wordLength >=0){
    System.out.print(word.charAt(wordLength--));
}

看看当wordlength实际上等于0//(wordlength>=0)时会发生什么 您试图在-1//word.charAt(wordLength-1)处访问char

使用while(wordLength>0)或while(wordLength>=1)更改它


祝您愉快

将条件更改为
wordLength>0
(不带=)。
int wordLength = word.length() - 1;
while (wordLength >=0){
    System.out.print(word.charAt(wordLength--));
}