我通过创建客户类的对象来从'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
答案 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
通过演绎,我认为问题来自于此。
您遇到与扫描程序实例相同的问题。