Android String.split () и / или StringTokenizer () не работают в цикле «Пока» - PullRequest
0 голосов
/ 17 февраля 2012

Это очень странно ...

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...
}

Я получаю силу закрытия на линии "String b = sa [1];". java.lang.NullPointerException. Мои «String s» в цикле содержат несколько символов «a», это не проблема. «String 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...

... внутри одного и того же цикла. ЖЕ ТОЧНАЯ ПРОБЛЕМА! «Строка а» является точной, когда система попадает в строку «Строка b», она выдает то же исключение / ошибку / принудительное закрытие. Я даже проверяю значение int x только для того, чтобы убедиться, что есть несколько токенов, и, опять же, это не проблема.

ПОЧЕМУ в этом цикле while я могу получить доступ / читать / назначать / использовать первый разделенный / токен моей строки, который я разделил / токенизировал ???

1 Ответ

0 голосов
/ 20 февраля 2012

По какой-либо причине, когда возникают проблемы с «BufferedReader», я просто удаляю приложение с тестового телефона и запускаю с нуля, и проблема устраняется. Возможно, «файл» поврежден, я не уверен. Я дважды сталкивался с этой проблемой, и удаление приложения и повторный запуск исправили его оба раза.

...