class Revers
{
static void temp(String k)
{
int x;
char ch[]= k.toCharArray(); //Convert String into character
char p[]=k.toCharArray(); //Convert String into character
x=k.length();
System.out.println(x);
for(int i=0;i<x;x--,i++)
{
p[i]=ch[x]; `/*Exception comes here*/`
System.out.println(p[i]);
}
}
public static void main(String... s)
{
String g="HEllo java";
temp(g); //passig g as argument
}
}
答案 0 :(得分:2)
数组是零索引的。
我们假设为k
长度为10的论点。这里会发生什么?:
int x;
char ch[]= k.toCharArray(); //Convert String into character
char p[]=k.toCharArray(); //Convert String into character
x=k.length();
ch
现在的长度也是10,这意味着它的指数范围为0-9。 x
现在也是10.然后你这样做:
p[i]=ch[x];
i
为0,所以没关系。但x
为10. ch
仅为0-9。因此错误。您希望上限值小于字符串的长度:
x = k.length() - 1;
答案 1 :(得分:1)
看看这一行:
x=k.length();
然后告诉我这里访问了哪个元素:
p[i]=ch[x];
我相信你会发现自己。
答案 2 :(得分:0)
ch[x - 1]
是改变:
int x;
final char ch[] = k.toCharArray(); // Convert String into character
final char p[] = k.toCharArray(); // Convert String into character
x = k.length();
System.out.println(x);
for (int i = 0; i < x; x--, i++) {
p[i] = ch[x - 1];
System.out.println(p[i]);
}
你正试图获得&#39; x&#39;数组的索引,但有x-1
答案 3 :(得分:0)
class Revers
{
static void temp(String k)
{
int x;
char ch[]= k.toCharArray(); //Convert String into character
char p[]=k.toCharArray(); //Convert String into character
x=k.length()-1;//Here is the correction*********************
System.out.println(x);
for(int i=0;i<x;x--,i++)
{
p[i]=ch[x]; /*Exception comes here*/
System.out.println(p[i]);
}
}
public static void main(String... s)
{
String g="HEllo java";
temp(g); //passig g as argument
}
}
答案 4 :(得分:0)
正如其他人提到的Array
索引从zero
你的逻辑只反转了一半的字符串,为了让你的字符串完全颠倒
for (int i = 0; i < k.length(); x--, i++) {
p[i] = ch[x - 1];
}