我想反转一个字符串 .. 请告诉我为什么它不起作用?
I want to reverse a string .. please tell me why its not working?
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
到 o-1
,您的 i
也是如此。因此,q
从 o
下降到 1。最好是 q = o - i - 1
。
如果这不是家庭作业,更直接的解决方案是使用 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
当你的 while
循环开始它的第一次迭代时将评估为 g.length() - 0
。 g.length()
,基于 1,使得 g.length() - 0
"Out of range".
您没有正确使用索引,请尝试这样的操作:
int length = g.length();
for(int x = length - 1; x >= 0; x --){
System.out.print(g.charAt(x));
}
我们从索引 length - 1
开始,因为它是字符串中的最后一个字符,然后转到索引 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
来进行调试
case i=0
输出将是:
3
2
1
0
这导致 IndexOutOfBoundsException
。
case i=1
输出将是:
2
1
0
三个字母单词的准确输出是什么
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
到 o-1
,您的 i
也是如此。因此,q
从 o
下降到 1。最好是 q = o - i - 1
。
如果这不是家庭作业,更直接的解决方案是使用 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
当你的 while
循环开始它的第一次迭代时将评估为 g.length() - 0
。 g.length()
,基于 1,使得 g.length() - 0
"Out of range".
您没有正确使用索引,请尝试这样的操作:
int length = g.length();
for(int x = length - 1; x >= 0; x --){
System.out.print(g.charAt(x));
}
我们从索引 length - 1
开始,因为它是字符串中的最后一个字符,然后转到索引 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
case i=0
输出将是:
3
2
1
0
这导致 IndexOutOfBoundsException
。
case i=1
输出将是:
2
1
0
三个字母单词的准确输出是什么