ArrayIndexOutOfBoundsException:1错误

时间:2016-06-14 04:50:43

标签: java

我有几次这个错误,我找不到任何解决方案,我在这里读过其他问题,因为它试图读取一个不存在的数组索引。 我无法找到问题而且它只发生在我发送单引号字符串时(这是一个完整的JSON,但我只是发送那个部分进行测试,如果发送它会抛出相同的错误)完整的单引号JSON)但如果我发送一个简单的字符串,如我的名字,它不会给出任何问题,并打印它应该

public class Parser {

    public String x;    

    public static void main(String[] args) {
        printLn("Hola!");
        String zxc;
        zxc = ("'variable':[1,'Double']}");
        Parse(zxc);
    }
    public static void Parse(String chain){

        int len1 = chain.lastIndexOf("'variable':[");
        int asd = len1+1;
        String[] chainArr = new String[]{chain};
        printLn(chainArr[asd]);


    }

    public static void printLn(String cadena){
        System.out.println(cadena);
    }
    public static void printLn(String[] cadena){
        System.out.println(cadena);
    }
}

编辑:错误日志说:

  

“线程中的异常”主“java.lang.ArrayIndexOutOfBoundsException:   1在comp.juan.Parser.Parse(Parser.java:18)at   comp.juan.Parser.main(Parser.java:11)​​“

请:X

4 个答案:

答案 0 :(得分:4)

这是因为你的字符串Array中只有一个元素,即0th索引,但是你试图打印其他第0个索引。我认为排序中1st或更大'0'。

您的代码:

String[] chainArr = new String[]{chain};
printLn(chainArr[asd]);

将转换String Array中的整个字符串'variable':[1,'Double']}。所以它会成为。

chainArr[0] = "'variable':[1,'Double']}";

答案 1 :(得分:0)

我同意@janki,现在如果你的目的是解析json字符串,你也可以修改你的代码如下:

public static void Parse(String chain){

    String result[] = chain.split(":");
    printLn(result[0]);
    printLn(result[1]);
} 

希望它可以帮助你为同样的目的编写短代码。

答案 2 :(得分:0)

感谢Turo在评论中已经解决了,我真正想要的是将角色放在String中的特定位置。当我想要使用indexOf()时,我正在使用charAt()

indexOf会返回字符串中字符的位置,charAt会返回字符,字符就是我想要的字符。

答案 3 :(得分:0)

我跟踪你的代码为什么你有ArrayIndexOutOfBoundsException,请参阅以下内容..

  int asd = len1+1; //asd =1 
  String[] chainArr = new String[]{chain}; 
  //String[0]='variable':[1,'Double']} 
  System.out.println(chainArr[asd]); //chainArr Array have only zero index.