StdIn.readAll () против readString () - PullRequest
       54

StdIn.readAll () против readString ()

0 голосов
/ 16 апреля 2020

Я писал код для чтения строки из файла. При использовании String s = StdIn.readAll(); все работало нормально. Но я не понимаю, почему при использовании

while (!StdIn.readString().isEmpty())
    s = s.concat(StdIn.readString());

я получил ошибку java.util.NoSuchElementException. Это потому, что строка слишком длинная?

(я использовал эту библиотеку Stdln )

Спасибо!

1 Ответ

0 голосов
/ 16 апреля 2020

Каждый из вызовов StdIn.readString() читает другую строку. Таким образом, даже если строка, которую вы прочитали в условии while, не пуста, вы читаете (или пытаетесь прочитать) другую строку внутри l oop.

Сохранить в переменной:

String r;
while (!(r = StdIn.readString()).isEmpty()) {
  s = s.concat(r);
}

Кстати, лучшим подходом, чем concat, было бы просто использовать s += r или StringBuilder:

StringBuilder sb = new StringBuilder();
String r;
while (!(r = StdIn.readString()).isEmpty()) {
  sb.append(r);
}
s = sb.toString();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...