下面代码中,构造方法里定义了一个InputStream is=System.in,完成输入后就关闭is,
按照常理,每次new一个对象,构造方法都会被自动调用,那么InputStream is=System.in,和关闭is,每次都会运行一次,问题就出来了,经过几次测试,发现好像
System.in在上次被构造方法被调用后,再次new对象时,System.in没有打开,为什么?
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Comparator;
public class Student
{
String name;
int Chinese;
int Math;
int English;
Student() //throws IOException
{
try
{
InputStream is=System.in;
InputStreamReader isr=new InputStreamReader(is);
BufferedReader br=new BufferedReader(isr);
System.out.println("请输入学员姓名");
this.name=br.readLine();
System.out.println(is.available());
System.out.println("请输入该学员语文成绩");
this.Chinese = Integer.parseInt(br.readLine());
System.out.println("请输入该学员数学成绩");
this.Math = Integer.parseInt(br.readLine());
System.out.println("请输入该学员英语成绩");
this.English = Integer.parseInt(br.readLine());
//br.close(); 不注释会报异常
}
catch(IOException e){
System.out.println(e.toString());
}
}
}