toomanydoubts. Ответов: 1

Почему переменная x должна быть инициализирована при использовании класса inputstreamreader ?


импорт java.io.* ;
И2 открытый класс
{
публичный статический пустота главный(строка[] аргументы)
{
InputStreamReader e = новый InputStreamReader ( System.in) ;

int x=12 ; // заявление 1

пробовать{
х = е.читать() ;
}
catch (IOException p)
{

Системы.из.код println(" поймали ");
}

Системы.из.println(х); // заявление 2

}

}


Когда x не инициализируется в операторе 1 каким-либо значением, он выдает ошибку времени компиляции в операторе 2 и говорит, что x не инициализируется .

Но я думаю, что x должен быть инициализирован при вызове read, так как read () возвращает целое число .
Если нет, то какая концепция стоит за этим ? Пожалуйста помочь .

Что я уже пробовал:

Я запустил это на netbeans .

1 Ответов

Рейтинг:
0

OriginalGriff

Потому что есть путь через код, где x не имеет никакого значения, когда вы пытаетесь его распечатать: если возникает исключение e.read исполнение будет немедленно продолжено с самого начала. catch блок и x не присваивается значение.


toomanydoubts.

Тогда почему он работает с BufferedReader ?

OriginalGriff

:смеяться:
Откуда мне знать? Я не вижу, чтобы ваш код использовал это!

toomanydoubts.

Я все понял , спасибо !

OriginalGriff

Пожалуйста!