我试图在Java中反转一个字符串,但是当我运行它时我发现了一个错误:
@
这是我的代码:
"Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 3
at java.lang.String.charAt(String.java:658)
at ReversingText.reverse(ReversingText.java:13)
at ReversingText.main(ReversingText.java:27)"
不确定问题出在哪里,因为我认为索引从0开始,所以我将字符串的长度减少1来查找索引?
感谢您的帮助
答案 0 :(得分:2)
问题是你正在尝试获取变量letter
的字符(它以空字符串开头,因此没有长度,因此没有有效索引)而不是text
:
char character = letter.charAt(i);
试试这个:
char character = text.charAt(i);
答案 1 :(得分:1)
还有其他错误。这是正确的程序。
public class ReversingText {
public static String reverse(String text) {
int i = (text.length() - 1);
String letter = text;
String reverseletter = "";
while (i >= 0) {
char character = letter.charAt(i);
reverseletter += character;
i--;
}
return reverseletter;
}
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
System.out.print("Type in your text: ");
String text = reader.nextLine();
System.out.println("In reverse order: " + reverse(text));
}
}
答案 2 :(得分:1)
问题是您在空字符串i
中找到索引letter
处的字符。当while
循环第一次运行时,i = 3
并且letter
中的索引3处没有字符。
而是在charAt(i)
上致电text
:
public static String reverse(String text) {
int i = text.length() - 1;
String letter = "";
while (i >= 0) {
char character = text.charAt(i);
letter += character;
i--;
}
return letter;
}
或者,对于更简单的反转文本的方法,请使用:
public static String reverse(String text) {
return new StringBuilder(text).reverse().toString();
}
答案 3 :(得分:0)
另一个提示:
最后,请记得关闭读者。
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
System.out.print("Type in your text: ");
String text = reader.nextLine();
System.out.println("In reverse order: " + reverse(text));
reader.close(); // add this line
}
答案 4 :(得分:0)
问题在于这一行:char character = letter.charAt(i); 你曾用信而不是文字工作
以下是工作代码:
import java.util.Scanner;
public class ReversingText {
public static String reverse(String text) {
int i = text.length()-1;
System.out.println("length: " + i);
String letter = "";
while (i >= 0) {
char character = text.charAt(i);
letter += character;
i--;
}
return letter;
}
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
System.out.print("Type in your text: ");
String text = reader.nextLine();
System.out.println("In reverse order: " + reverse(text));
}
}
答案 5 :(得分:0)
这一行的问题:
char character = letter.charAt(i);
您应该使用text
变量而不是letter
进行操作:
char character = text.charAt(i);
您也可以使用Stack
数据结构在另一种方法中实现这一目标:
public static String reverse(String text) {
Stack<Character> st = new Stack<Character>();
String rtext = "";
for(int i = 0; i < text.length(); i++){
st.push(text.charAt(i));
}
while(!st.empty()){
rtext = rtext + st.pop();
}
return rtext;
}