Что произойдет при попытке скомпилировать и запустить данный код? Считается, что файл outstream уже создан.

import java.io.*;

public class Main {
    public static void main(String[] args) {
        try {
            FileInputStream fis = new FileInputStream("outstream");
            InputStreamReader isr = new InputStreamReader(fis);
            BufferedReader br = new BufferedReader(isr);
            try {
                do {
                    String str = br.readLine();
                    System.out.println(str);
                } while (str != null);             
            }
            finally {
                fis.close();
                isr.close();
                br.close();
            }
        } catch(IOException e){
            e.printStackTrace();
        }
    }
}
Explanation
Ошибка компиляции произойдёт из-за того, что переменная str объявлена внутри цикла do.. while().
Объявлять переменные в цикле, конечно же, разрешается. Только и использоваться они должны внутри тела цикла. А в этом примере переменная str используется за пределами блока, в котором она была объявлена - в условии продолжения цикла.

Следи за CodeGalaxy

Мобильное приложение Beta

Get it on Google Play
Обратная Связь
Продолжайте изучать
тесты по Java
Cosmo
Зарегистрируйся сейчас
или Подпишись на будущие тесты