循环调用标准输入流从键盘获取数据时只能执行一次
程序如下:
public class ExamView{
public char getUserAction()
{
BufferedReader bufferedReader = null;
String string = null;
try
{
bufferedReader = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Please input your answer:");
string = bufferedReader.readLine().substring(0,1);
} catch (IOException e)
{
e.printStackTrace();
} finally
{
try
{
if (string != null)
bufferedReader.close();
} catch (IOException e)
{
e.printStackTrace();
}
}
switch (string.toUpperCase())
{
case "A":
return 'A';
case "B":
return 'B';
case "C":
return 'C';
case "D":
return 'D';
case "N":
return 'N';
case "P":
return 'P';
}
return ' ';
}
}
public class Exam{
public static void main(String[] args)
{
ExamView examView = new ExamView();
while (true)
{
char a = examView.getUserAction();
System.out.println(a);
}
}
我想通过while循环来多次获取从键盘输出的选择并输出,但是这个循环运行到第二次时会报错,错误提示是流被关闭了,但每次循环不都会先创建一个输入流吗?求解答。(下面是错误提示)
回答
System.in
是一个特殊的 InputStream
,因为系统来维护他的打开和关闭,所以不要使用 close 方法关掉,关掉了就没法再读取了。
以上是 循环调用标准输入流从键盘获取数据时只能执行一次 的全部内容, 来源链接: utcz.com/a/27323.html