我有几次这个错误,我找不到任何解决方案,我在这里读过其他问题,因为它试图读取一个不存在的数组索引。 我无法找到问题而且它只发生在我发送单引号字符串时(这是一个完整的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
答案 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.