任何人都可以告诉我如何解决这个例外

时间:2014-09-16 12:51:42

标签: java exception indexoutofboundsexception

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
    }
}

5 个答案:

答案 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];
}