【问题标题】:Java Calculator wrong operator promptJava Calculator 错误操作符提示
【发布时间】:2017-10-10 16:39:45
【问题描述】:

我有一个计算器类,我希望操作输入特定于这些字符串“+、-、/、*”,如果不是,我想打印一条消息以再次输入操作员。 如果有人会减少我的代码,请这样做。谢谢

这是我的代码

import java.util.Scanner;

公共类计算器1 {

public static void main(String[] args) {    
    Scanner num = new Scanner(System.in);
    String operation;
    Double fnum, lnum, answer;
    System.out.println("Enter first Number: ");
    while (!num.hasNextDouble())
    {
        num.next();
        System.out.print("Enter first Number: ");
    }
    fnum = num.nextDouble();
    System.out.println("Enter Operation: ");
    //HERE IM BEING CONFUSED
    while (!num.equals("+, -, /, *"))
    {
        num.next();
        System.out.print("Enter Operator: ");
    }
    operation = num.next();
    //End
    System.out.println("Enter Second Number: ");
    while (!num.hasNextDouble())
    {
        num.next();
        System.out.print("Enter Second Number: ");
    }
    lnum = num.nextDouble();




    switch (operation) {
    case "+":
        answer = fnum + lnum;
        System.out.print("Equals= " + answer);
        break;
    case "-":
        answer = fnum - lnum;
        System.out.print("Equals= " + answer);
        break;
    case "*":
        answer = fnum * lnum;
        System.out.println("Equals= " + answer);
        break;
    case "/":
        answer = fnum / lnum;
        System.out.println("Equals= " + answer);
        break;
    default:
        System.out.println("wrong operator");
        break;


    }
}

}

【问题讨论】:

  • !num.equals("+, -, /, *") num 是扫描仪!任何时候扫描器都不等于字符串。
  • 你有什么问题?
  • 调试和单步调试代码时会发生什么?错误是什么?
  • numScanner。它永远不会等于String

标签: java calculator


【解决方案1】:

这是一种在 SWITCH 语句中使用运算符的方法。

public static void main(String[] args) {

    Scanner num = new Scanner(System.in);
    double v1,v2;
    String v3;

    System.out.print("Enter first number: ");
    v1 = num.nextDouble();
    System.out.print("Enter second number: ");
    v2 = num.nextDouble();
    System.out.print("Enter operation [+]   [-]   [*]   [/]: ");
    v3 = num.next();

    System.out.println( ("+".equals(v3) ) ? Operators.ADD.calculate(v1, v2) : "....");

    }

public enum Operators {
    ADD;

    double calculate(double x, double y) {
        switch (this) {
            case ADD:
                return x + y;
            default:
                throw new AssertionError("Unknown operations " + this);
        }
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-02
    • 1970-01-01
    • 2014-04-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    相关资源
    最近更新 更多