如何调试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);
}