字符串的Java问题:尝试反转字符串的中点。。字符串超出范围异常
我正在为我的一个班做作业。一般来说,我对java非常陌生,对于这个问题,我被要求只使用循环和charAt();命令反转字符串的中点。然而,当我试图在中点后反转字符串时,遇到了一个问题。它给了我一个例外,我不知道如何理解它,因为它在我看来是正确的。任何帮助都将不胜感激字符串的Java问题:尝试反转字符串的中点。。字符串超出范围异常,java,string,loops,indexoutofrangeexception,charat,Java,String,Loops,Indexoutofrangeexception,Charat,我正在为我的一个班做作业。一般来说,我对java非常陌生,对于这个问题,我被要求只使用循环和charAt();命令反转字符串的中点。然而,当我试图在中点后反转字符串时,遇到了一个问题。它给了我一个例外,我不知道如何理解它,因为它在我看来是正确的。任何帮助都将不胜感激 import java.util.Scanner; public class PS4Reverse { public static void main (String [] args) { String x = ""; Str
import java.util.Scanner;
public class PS4Reverse {
public static void main (String [] args) {
String x = "";
String t = "";
String full = "";
String rev = "";
String complete = "";
Scanner user = new Scanner(System.in);
System.out.println("Enter a string.");
x = user.nextLine();
int real = x.length();
int half = x.length();
half = half / 2;
int i = 0;
for (i = 0; i != half; i++)
{
char n = x.charAt(i);
full = full + n;
}
for (i = i; i != real; i++)
{
char n = x.charAt(i);
t = t + n;
}
int back = t.length();
System.out.println(back);
for (i = back; i != 0; i--)
{
char n = t.charAt(i);
rev = rev + n;
}
complete = full + rev;
System.out.println("Original String:\t\t" + x)
System.out.println("Reverse String:\t\t" + complete);
}
}
提前非常感谢大家 首先,如果您能准确地告诉我们发生了什么异常,这会有所帮助。它是一个
StringIndexOutOfBoundsException
,而不是字符串超出范围异常
或indexoutofrangeexception
无论如何,这就是问题所在:
int back = t.length();
for (i = back; i != 0; i--)
{
char n = t.charAt(i);
索引为零baed,因此如果t.length()
为4,t.charAt(4)
将超出范围。您需要从t.length()-1
开始。您遇到以下错误:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 5
at java.lang.String.charAt(Unknown Source)
at PS4Reverse.main(PS4Reverse.java:49)
int back = t.length(); // this code length of t string. But array indis is starting 0.
这意味着第一项为0,最后一项必须为back-1
你用它
for (i = back-1; i >= 0; i--)
{
char n = t.charAt(i);
rev = rev + n;
}
您的最后一个循环从数组的长度开始,该长度超过其最后一个元素。您的
System.out.println()
语句之一后也缺少一个分号,但我认为这只是一个输入错误。这对我很有效。。非常感谢你。我非常感激@GavinWebb是当有人回答你的问题时该怎么做。要将答案标记为已接受,请单击复选标记✔ 在答案旁边,将其从灰显切换为填充。没有必要对您的问题或答案添加评论来表示“谢谢”。