за стриймовете

3 отговора 125 прегледа
#1

за стриймовете

// 1b. Reading standard input:
BufferedReader stdin =
new BufferedReader(
new InputStreamReader(System.in));
System.out.print("Enter a line:");
System.out.println(stdin.readLine());
На последния ред имаме readLine(), което явно очаква от потребителя да натисне enter. По поведението на програмата се разбира, че изпълнението й спира на тази стъпка и очаква това действие. Моето първоначално предположение беше, че ще при интерпретирането ще счете, че аргумента е празен низ или нещо такова...
Въпросът е кое кара изпълнението да чака? Дали това е BufferedReader-а или нещо друго?
Мерси предварително за отзивчивостта :)

Отговор
в отговор на нeo #2

Re: за стриймовете

Mnogo prosto - input-stream-a ne e konstanta - tova koeto vika6 e funkcia i rezultatyt ot neia se podava na izhoda. Moje6 da si go predstavi6 taka:

String str = ...readLine();
...println(str);

Отговор
в отговор на Sten #3

Re: за стриймовете

Ясно, а от друга страна тази функция не се изпълнява докато не се въведе enter...

Отговор
в отговор на нeo #4

Re: за стриймовете

spored javadoca readline() blokira threada dokato niama input ili exception
drugia put cheti javadoca, ima dosta tunki podrobnosti :)

karam zaika zashtoto moga!
Отговор