簡體   English   中英

執行正確的代碼后,如何停止執行每個println的代碼?

[英]How do I stop my code from executing every println after I execute the right code?

    Scanner scan = new Scanner(System.in);

    System.out.print("Enter 2 numbers: ");
    int num1 = scan.nextInt();
    int num2 = scan.nextInt();
    System.out.println("Numbers Saved! Choose your operator + - * / ");
    String operator = scan.next();
    int result;

    result = (operator.equals("+")) ? (num1 + num2) : (num1);
    System.out.println("The addition result is " +result);
    result = (operator.equals("-")) ? (num1 - num2) : (num1);
    System.out.println("The subtraction result is " +result);
    result = (operator.equals("*")) ? (num1 * num2) : (num1);
    System.out.println("The multiplication result is " +result);
    result = (operator.equals("/")) ? (num1 / num2) : (num1);
    System.out.println("The division result is " +result);



}

}這是我的簡單計算器代碼,例如,當我選擇+選項時,它將運行所有System.out.println行,如何防止它執行此操作,而僅執行與運算符匹配的println?

嘗試切換:

switch (operator) {
    case "+":
        result = num1 + num2;
        System.out.println("The addition result is " + result);
        break;
    case "-":
        result = num1 - num2;
        System.out.println("The subtraction result is " + result);
        break;
    case "-":
        result = num1 * num2;
        System.out.println("The multiplication result is " + result);
        break;
    case "/":
        result = num1 / num2;
        System.out.println("The integer division result is " + result);
        break;
    default:
        throw IllegalArgumentException("Unsupported operator: " + operator);
}

我會將運算符邏輯(解析度和評估值) 封裝到一個enum 喜歡,

enum Oper {
    ADDITION("+"), SUBTRACTION("-"), MULTIPLICATION("*"), DIVISION("/");
    Oper(String symbol) {
        this.symbol = symbol;
    }

    public int eval(int a, int b) {
        switch (this) {
        case ADDITION: return a + b;
        case SUBTRACTION: return a - b;
        case MULTIPLICATION: return a * b;
        case DIVISION: return a / b;
        }
        return -1;
    }

    private String symbol;

    public static Oper from(String operator) {
        for (Oper o : values()) {
            if (o.symbol.equals(operator)) {
                return o;
            }
        }
        return null;
    }
}

這簡化了main的邏輯,只需解決運算符並對其進行評估。 喜歡,

Oper o = Oper.from(operator);
System.out.printf("The %s result is %d%n", o.name().toLowerCase(), o.eval(num1, num2));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM