2016-06-14 8 views
0

У меня есть эта ошибка несколько раз, и я не могу найти какое-либо решение, здесь я прочитал другие вопросы, связанные с попыткой прочитать индекс массива, который не существует. Я не могу найти проблему, и это происходит только тогда, когда я отправляю одиночную кавычку (которая поддерживается как полная JSON, но я только отправляю эту часть для тестирования, она будет вызывать ту же ошибку, если отправка полный сингл цитирует JSON), но если я посылаю простую строку, например, как мое имя не будет давать любые проблемы и распечатать его, как он долженArrayIndexOutOfBoundsException: 1 Ошибка

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

EDIT: Error Log говорит:

" Исключение в потоке «main» java.lang.ArrayIndexOutOfBoundsException: 1 на comp.juan.Parser.Parse (Parser.java:18) на comp.juan.Parser.main (Parser.java:11)»

Пожалуйста: X

+0

Поделитесь точный журнал ошибок .. !! –

+0

Извините, полностью забыл, так как я положил его на заголовок, я делаю это прямо сейчас –

+0

То, что вы пытаетесь достичь здесь, головоломка меня .. Но когда вы делаете 'chainArr [asd]', с 'asd' больше, чем размер 'chainArr' вы получаете' ArrayIndexOutOfBoundException'. ([ideone] (https://ideone.com/i92RmX) опубликованного кода) –

ответ

0

Я согласен с @janki, сейчас Если ваша цель, чтобы разобрать строку JSON, вы можете изменить свой код, как показано ниже также:

public static void Parse(String chain){ 

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

Надежда Это может помочь вам написать короткий код для того же цель.

4

Это происходит потому, что у вас есть только один элемент в строке Array т.е. при 0th индекса, но вы пытаетесь напечатать другой, то индекс 0-й. Я думаю, 1st или больше «0» в сортировке.

Ваш код:

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

преобразует всю строку 'variable':[1,'Double']} в массив строк. Так оно и будет.

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

О, спасибо, много! это была не проблема, но хорошо знать что-то новое !, я исхожу из javascript, и привыкание к java немного грубо, но оно также выходит. –

+0

Рад помочь вам :) –

0

Уже решено это благодаря Turo в комментариях. То, что я на самом деле предназначалось, - это получить персонажа в определенной позиции в String. Я использовал indexOf(), когда я хотел использовать charAt().

indexOf вернет позицию символа в строке, charAt вернет символ, персонаж был тем, что я хотел.

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. 

Смежные вопросы