import java.util.*;
public class reverse {
public static void main(String[] args) {
int i=0;
Scanner p= new Scanner(System.in);
String g=p.next();
int o = g.length();
while(i<=o)
{
int q=o - i;
System.out.print(g.charAt(q));
i++;
}
}
}
我得到一个Index out of range exception
。
答案 0 :(得分:3)
如果这不是家庭作业,那么更直接的解决方案是像这样使用StringBuilder
:
String reversed = new StringBuilder("your string here").reverse().toString();
另一方面,如果您要循环,可以使用简单的for循环来实现:
for (int i = o - 1; i >= 0; i--) {
System.out.print(g.charAt(i));
}
您的循环生成超出范围的异常,因为在您的情况下,q = o - i
在您的g.length() - 0
循环开始其第一次迭代时将评估为while
。 g.length()
基于1,使g.length() - 0
超出范围。
答案 1 :(得分:0)
索引也从0
到o-1
,也是您的i
。因此,q
从o
下降到1。最好做q = o - i - 1
。
答案 2 :(得分:0)
您没有正确使用索引,请尝试以下操作:
int length = g.length();
for(int x = length - 1; x >= 0; x --){
System.out.print(g.charAt(x));
}
因为它是字符串中的最后一个字符,所以我们开始索引length - 1
,然后转到索引0
答案 3 :(得分:0)
将i=0
更改为i=1
public static void main(String[] args) {
int i = 1;
Scanner p = new Scanner(System.in);
String g = p.next();
int o = g.length();
while (i <= o) {
int q = o - i;
// System.out.print(g.charAt(q));
//System.out.print(q); - test line
i++;
}
}
您可以通过输入三个字母词(例如:war)来取消调试test line
案例i=0
的输出为:
3
2
1
0
哪个指向IndexOutOfBoundsException
。
案例i=1
的输出为:
2
1
0
这是三个字母单词所需的确切输出