#java #циклы
Имеется такой код: public static void main(String[] args) throws IOException { StringReader reader = new StringReader("Khoor Dpljr"); System.out.println(decode(reader, -3)); //Hello Amigo } public static String decode(StringReader reader, int key) throws IOException { BufferedReader br = new BufferedReader(reader); while (br.ready()) { int b = br.read(); b = b + key; char c = (char) b; System.out.println(c); } return null; } Почему ready() всегда выдает true?
Ответы
Ответ 1
Потому что так написано в документации к этому методу: True if the next read() is guaranteed not to block for input, false otherwise Перевод: true, если гарантируется, что следующий вызов метода read() будет неблокирующим Так как при достижении конца потока метод read сразу возвращает -1, то и ready() возвращает true. Чтобы код заработал, можно переписать его так: int c; while ((c = bufferedReader.read()) != -1) { // ... } Частичный перевод ответа @StephenC
Комментариев нет:
Отправить комментарий