Почему не выполняется блок кода после цикла while?
Запускаю под отладчиком код:
import java.io.*;
public class Program {
public static void main(String[] args) throws IOException {
char[] buf;
buf = new char[9];
BufferedInputStream bf = new BufferedInputStream(System.in);
try{
int i, j, el;
j = bf.available();
char c;
while(((i = bf.read()) != -1) & j > 0) {
c = (char) i;
j = bf.available();
buf[j] = c;
}
el = Integer.parseInt(String.copyValueOf(buf));
System.out.println(el);
}
finally{
bf.close();
}
}
}
в консоле набираю например: "123", почему никогда не выполняется код ниже?:
el = Integer.parseInt(String.copyValueOf(buf));
цикл while выполняется без проблем, а далее ничего не происходит.
Почему не выполняется блок кода ниже?
el = Integer.parseInt(String.copyValueOf(buf));
System.out.println(el);
Ответы (1 шт):
Автор решения: dmtr
→ Ссылка
Потому что у вас не выполняется цикл while, поэтому и в ваш el нечего положить...
Чтобы особо не ломать вашу задумку, предлагаю вам оформить код в блоке try следующим образом:
int i, j = 0, el;
char c;
while((i = bf.read()) != 1 && bf.available() > 0) {
c = (char) i;
buf[j] = c;
j++;
}
el = Integer.parseInt(String.copyValueOf(buf).trim());
System.out.println(el);
К String.copyValueOf(buf).trim() добавил метод trim(), чтобы схлопнуть пробелы, которые у вас будут из-за заранее объявленной размерности массива.