如何调试Java程序中的“字符串索引超出范围”错误?

如何调试Java程序中的“字符串索引超出范围”错误?,java,runtime-error,Java,Runtime Error,这是我的密码。为什么我会犯这个错误 ["Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 2 at java.lang.String.charAt(Unknown Source) at Haupt.main(Haupt.java:21)"] 字符串对象的索引从0开始。所以你们并没有索引哪个数字等于麦汁长度 试试这个 import ja

这是我的密码。为什么我会犯这个错误

["Exception in thread "main" 
java.lang.StringIndexOutOfBoundsException: String index out of range: 2
    at java.lang.String.charAt(Unknown Source)
    at Haupt.main(Haupt.java:21)"]
字符串对象的索引从0开始。所以你们并没有索引哪个数字等于麦汁长度

试试这个

import java.util.Scanner;

public class Haupt {

    public static void main(String[] args) {
        String Wort="";
        String WortCpy="";
        String WortRev="";
        int i=0;
        Scanner scan = new Scanner(System.in);


        System.out.print("Geben Sie ein Wort ein : "); //Ausgabe
        Wort = scan.nextLine(); //Eingabe
        scan.close();
        for(i=0;i < Wort.length();i++) { 
            WortCpy= WortCpy +  Wort.charAt(i); //Speichert jeden Buchstaben einzeln in Wortcpy ab
        }
        for(i=Wort.length();i>=0;i--) {
            WortRev = WortRev +  Wort.charAt(i); 
        }

        System.out.println("Wort : " + Wort);
        System.out.println("Wort Kopiert : " + WortCpy);
        System.out.println("Wort umgedreht : " + WortRev);


    }

}
String.length返回字符串的长度,但如果索引为零,则不能将其用作字符索引。 试着这样做:

 for(i=Wort.length()-1;i>=0;i--) {
        WortRev = WortRev +  Wort.charAt(i); 
    }

当您从wort.length循环到0,反之亦然,您需要使用wort.length-1


这是因为字符串字符数组的索引为0,这意味着第一个字符的索引为0,最后一个字符的长度为-1。根据这个逻辑,在你的代码中,当循环到达i=wort.length的点时,您将得到数组越界错误。

一个错误:您的第二个循环应该从wort.length-1开始,而不是从wort.length开始。请用小写字母开始变量名,否则您将混淆99%的java程序员和语法高亮者。代码为i=wort.length。。。{…Word.charAti…}部分Word.charAti在第一次迭代时的行为类似于Word.charAtWord.length。你现在看到问题了吗?我很想把这个问题标成一个骗局。不开玩笑,我知道的同时,我现在就改了,然后我看到你写的,我太傻了,无论如何谢谢
for ( i = Wort.length()-1; i >= 0; i-- )
{
    WortRev = WortRev +  Wort.charAt(i); 
}