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

を編集する必要があり、それは好きでは印刷されません:エラー・ログは言う:

」スレッドmain()内の例外java.lang.ArrayIndexOutOfBoundsException: 1 at 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

私はあなたの目的は、JSON文字列を解析する場合さて、あなたはまた、以下のようにコードを変更することができ、@jankiに同意:

public static void Parse(String chain){ 

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

は、それはあなたが同じのための短いコードを書く際に役立つことを願って目的。

4

あなたは0thインデックスであなたの文字列Arrayすなわちに一つだけの要素を持っていますが、他の後、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のコメントのおかげで解決しました。私が実際に意図したことは、文字列の特定の位置に文字を取得することでした。私が使用したかったものがcharAt()だったとき、私はindexOf()を使っていました。

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. 

関連する問題