間で動作していない...アンドロイドのstring.Split()及び/又はStringTokenizerは()これは非常に奇妙であるループ
BufferedReader br = new BufferedReader(new InputStreamReader(openFileInput("file")));
String s;
while ((s = br.readLine()) != null) {
String[] sa = s.split("a");
String a = sa[0];
String b = sa[1];
String c = a + "the letter a was here" + b;
// Do something with String c...
}
I [1]閉じるライン「列Bの=のSAに力を得ます; " java.lang.NullPointerException。 ループ内の 'String s'に複数の 'a'文字がありますが、これは問題ではありません。 「文字列a」は常に正しいです。 しかし、 'String b'は常に例外をスローします。 変数(sa、a、b、c)をループ外に宣言しますが、助けません。
奇妙なことに、StringTokenizerには、同じ問題があります。 それだけでループしながら同じ内... ...
StringTokenizer st = new StringTokenizer(s, "a");
int x = st.countTokens();
String a = st.nextToken();
String b = st.nextToken();
String c = a + "the letter a was here" + b;
// Do something with String c...
を最初のトークン/スプリットを読むことができます。 同じ問題があります。 'String a'は正確で、システムが 'String b'行になると、同じ例外/エラー/強制終了をスローします。 私は 'int x'の値をチェックするだけで、複数のトークンがあることを確認しています。また、これは問題ではありません。
WHYこのWhileループでは、分割/トークン化された文字列の最初の分割/トークンのみにアクセス/読み取り/割り当て/使用できますか?
@のようなものではなく、別のトークンを試すことができますか?それが動作するかどうか教えてください –
トークナイザで、bに割り当てる前にst.hasMoreToken()を使ってみましたか?それは役に立つかもしれません。 – Urban
サンプル入力を使用して更新してください。あなたのロジックを試してみるとうまくいきます。 – kosa