创建两个BufferedReader会关闭输入流吗?

问题描述 投票:0回答:2

所以我写了这两种方法:

    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输入流,还是我误解了它的工作原理?

java bufferedreader system.in
2个回答
1
投票

是否尝试使用资源关闭System.in输入流中的>]

是,是的。您不应该关闭System.in输入流。

参见:


0
投票

System.out用于自动关闭资源-try-with-reource不需要此功能,因此仅使用普通的System.in语句,如:

© www.soinside.com 2019 - 2024. All rights reserved.