int a1,a2,a3;
//Integer in=null;
System.out.println("请输入第一个员工的姓名");
BufferedReader a=new BufferedReader(new InputStreamReader(System.in));
String n1=a.readLine();
System.out.println("请输入第一个员工的年龄");
a1=System.in.read();
//a1= in.parseInt(a.readLine());
System.out.println("请输入第二个员工的姓名");
BufferedReader b=new BufferedReader(new InputStreamReader(System.in));
String n2=b.readLine();// 标记1:为什么此处不能发生i\o阻塞?
System.out.println("请输入第二个员工的年龄");
//a2= in.parseInt(a.readLine());
a2=System.in.read();
System.out.println("请输入第三个员工的姓名");
BufferedReader c=new BufferedReader(new InputStreamReader(System.in));
String n3=c.readLine(); //标记2:为什么此处不能发生i\o阻塞?
System.out.println("请输入第三个员工的年龄");
a3=System.in.read();
问题在标记1,2中。麻烦介绍一下io阻塞的机制,谢谢。
//Integer in=null;
System.out.println("请输入第一个员工的姓名");
BufferedReader a=new BufferedReader(new InputStreamReader(System.in));
String n1=a.readLine();
System.out.println("请输入第一个员工的年龄");
a1=System.in.read();
//a1= in.parseInt(a.readLine());
System.out.println("请输入第二个员工的姓名");
BufferedReader b=new BufferedReader(new InputStreamReader(System.in));
String n2=b.readLine();// 标记1:为什么此处不能发生i\o阻塞?
System.out.println("请输入第二个员工的年龄");
//a2= in.parseInt(a.readLine());
a2=System.in.read();
System.out.println("请输入第三个员工的姓名");
BufferedReader c=new BufferedReader(new InputStreamReader(System.in));
String n3=c.readLine(); //标记2:为什么此处不能发生i\o阻塞?
System.out.println("请输入第三个员工的年龄");
a3=System.in.read();
问题在标记1,2中。麻烦介绍一下io阻塞的机制,谢谢。
String n2=b.readLine();//当上面接受到输入事件后,会触发这里的读
运行结果是这样的:
请输入第一个员工的姓名
fd
请输入第一个员工的年龄
3
请输入第二个员工的姓名
请输入第二个员工的年龄
df
请输入第三个员工的姓名
请输入第三个员工的年龄
4
3
请输入第二个员工的姓名System.out.println("请输入第一个员工的年龄");
a1=System.in.read();
System.out.println("请输入第二个员工的姓名");
BufferedReader b=new BufferedReader(new InputStreamReader(System.in));
String n2=b.readLine();// 标记1:为什么此处不能发生i\o阻塞?你输入的是3回车,System.in.read()读入了3,但是没有读入回车,接着回车就被readLine()读了