所以我写了这两种方法:
public Player readPlayerData() {
Player player = new Player();
try(BufferedReader br = new BufferedReader(new InputStreamReader(System.in))){
System.out.println("What is your name?");
player.setName(br.readLine());
System.out.println("How much money do you have?");
player.setBalance(BigDecimal.valueOf(Double.parseDouble(br.readLine())));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(player);
return player;
}
public Currency readPlayerCurrency() {
Currency currency = null;
try(BufferedReader br2 = new BufferedReader(new InputStreamReader(System.in))){
System.out.println("What is your currency?");
currency = Currency.valueOf(br2.readLine());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(currency);
return currency;
}
[当我一次调用它们时,它们按预期工作,但是当我彼此调用时,我得到一个java.io.IOException:流关闭。是否尝试使用资源以某种方式关闭System.in输入流,还是我误解了它的工作原理?
是否尝试使用资源关闭System.in输入流中的>]
是,是的。您不应该关闭
System.in
输入流。
参见:
System.out
用于自动关闭资源-try-with-reource
不需要此功能,因此仅使用普通的System.in
语句,如: