IOException:从java中的控制台读取时流关闭错误

时间:2016-12-24 14:14:58

标签: java ioexception

我通过创建客户类的对象来从'main'调用name_setter()方法,以从控制台获取输入并存储在客户类对象的'name'变量中输入的名称。

import java.io.*;

public class Rental {

    public static void main(String[] args) {
        customer c = new customer();
        c.name_setter(); // calls the method from customer class
    }
}

class customer {
    String name;

    String name_setter() {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        try {
            System.out.println("Enter the name:"); // executes till here
            name = br.readLine(); // stream close error
            System.out.println(name);
            if (name.length() == 0) {
                name = br.readLine();
            }
        } catch (IOException e) {
            System.out.println("" + e);
        }

        return name;
    }
}

我得到的错误是:

java.io.IOException: Stream closed

1 个答案:

答案 0 :(得分:0)

正如Hovercraft Full Of Eels所说,这段代码在运行时不会引起问题。
它可能与提出异常的人不同:java.io.IOException: Stream closed

注意:您使用BufferedReader System.in链接InputStream 关闭BufferedReader后,它会关闭System.in

例如,在此代码的末尾System.in已关闭:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
br.close();
br = new BufferedReader(new InputStreamReader(System.in));

如果您想在BufferedReader中再次阅读,则不应关闭System.in 通过演绎,我认为问题来自于此。

您遇到与扫描程序实例相同的问题。