3行のテキストを返すWebサーバー上のPHPスクリプトにgetリクエストを送信します。私はこのようなラインパースたよりAndroid:信じられないほどのStringIndexOutOfBoundsException
BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
:
line = "";
while ((line = rd.readLine()) != null) {
String a = line.substring(0, line.indexOf('_'));
String b = line.substring(line.indexOf('_') + 1);
}
を、これはStringIndexOutOfBounds例外を投げ続け、私は本当に理由を見ることができない私は、このようなサーバからの応答を処理します。私のプロジェクトの別の場所で、すでに別のPHPスクリプトを使っていろいろな行のテキストと別の構文解析を使って同様のメソッドを使っています。返された行をログに記録して、サーバから正常に返されたかどうかを確認すると、PHPスクリプトが送信する行と同じ行になります。
ここは楽しい部分です。私はかなり辛抱強く成長していたとき、私はラインを使ってラインを測定しようとしました:
int l = line.length();
これは私のラインで11を返しました。私は単純に使用して何かを表示しようとしたとき、より:
line.charAt(5);
それはStringIndexOutOfBoundsExceptionを投げた:5.私は本当にこれで間違っているのか分かりません。誰にもアイデアはありますか?ありがとう!
while ((line = rd.readLine()) != null) {
Log.v("connection - user list", line); //This line logs: 1_485963
//But this doesent work
String a = line.substring(0, line.indexOf('_'));
String b = line.substring(line.indexOf('_') + 1);
}
indexOfは、物が見つからない場合は-1を返します。 -1は有効なインデックスではありません。 – zapl
最初のループでは、最後の文字ではない少なくとも1つの '_ 'を含む文字列を渡すだけですか?しかし、2番目のビットは説明できません: -/ – Rup
実際には、部分文字列を抽出しようとする前に、indexOfの結果と1と1の長さを比較する必要があります。 –