之樾 2021-02-15 21:00 采纳率: 50%
浏览 54
已采纳

编写简易计算器时的报错

public class HomeworkDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        String str = "";
        double i = 0;
        double j = 0;
        double result = 0;
        while (scanner.hasNextDouble()) {
            i = scanner.nextDouble();
            break;
        }
        while (scanner.hasNextLine()) {
            str = scanner.nextLine();
            switch (str) {
                case "+":
                    j = scanner.nextDouble();
                    result = add(i, j);
                    i = result;
                    System.out.println(result);
                    break;
                case "-":
                    j = scanner.nextDouble();
                    result = minus(i, j);
                    i = result;
                    System.out.println(result);
                    break;
                case "*":
                    j = scanner.nextDouble();
                    result = multiply(i, j);
                    i = result;
                    System.out.println(result);
                    break;
                case "/":
                    j = scanner.nextDouble();
                    result = divide(i, j);
                    i = result;
                    System.out.println(result);
                    break;
            }if (str.equals("quit")){
                System.out.println("退出计算机");
                break;
            }

            scanner.close();
        }
    }//加
    public static double add ( double a , double b){
        return a + b;
    }//减
    public static double minus ( double a , double b){
        return a - b;
    }//乘
    public static double multiply ( double a , double b){
        return a * b;
    }//除
    public static double divide ( double a , double b){
        return a / b;
    }


}

输出9-1就报错了,求教一下是哪里出了问题?

Exception in thread "main" java.lang.IllegalStateException: Scanner closed
    at java.util.Scanner.ensureOpen(Scanner.java:1070)
    at java.util.Scanner.findWithinHorizon(Scanner.java:1670)
    at java.util.Scanner.hasNextLine(Scanner.java:1500)
    at com.sean.base.method.HomeworkDemo.main(HomeworkDemo.java:25)

Process finished with exit code 1

  • 写回答

1条回答 默认 最新

  • 幻灰龙 2021-02-15 23:38
    关注

    >Exception in thread "main" java.lang.IllegalStateException: Scanner closed

    你在这个循环里就关闭了scanner, 循环体执行第二次时,sanner就已经不能用了。

    while (scanner.hasNextLine()) {
      ...
    
      scanner.close()
    
    }

    你觉的呢?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 51单片机中C语言怎么做到下面类似的功能的函数(相关搜索:c语言)
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端
  • ¥15 基于PLC的三轴机械手程序
  • ¥15 多址通信方式的抗噪声性能和系统容量对比
  • ¥15 winform的chart曲线生成时有凸起