【问题标题】:Why am I getting these outputs? [duplicate]为什么我会得到这些输出? [复制]
【发布时间】:2022-12-06 07:02:37
【问题描述】:

我正在尝试用 Java 制作一个简单的计算器,但我不断收到一些奇怪的输出。 例如,如果我将 3 乘以 3,我会得到这些输出:9, 1, 27.0

这是代码

`

import java.util.Scanner;
import java.math.MathContext;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        long firstNum;
        long secondNum;
        long choice;
        System.out.println("C A L C U L A T O R");

        System.out.println();

        System.out.println("Enter the first number");
        firstNum = scanner.nextLong();

        System.out.println("Enter the second number");
        secondNum = scanner.nextLong();

        System.out.println("What operation do you want to perform?");

        System.out.println("1. Addition");
        System.out.println("2. Subtraction");
        System.out.println("3. Multiplication");
        System.out.println("4. Division");
        System.out.println("5. Power");


        System.out.println("Enter your choice");
        choice = scanner.nextLong();

        switch ((int) choice){
            case 1:
                System.out.println(firstNum + secondNum);
            case 2:
                System.out.println(firstNum - secondNum);
            case 3:
                System.out.println(firstNum * secondNum);
            case 4:
                System.out.println(firstNum / secondNum);
            case 5:
                System.out.println(Math.pow(firstNum, secondNum));
        }

    }
}

`

我尝试使用数学,但它仍然是一样的。我也尝试从整数切换到长整数,但问题仍然存在。

【问题讨论】:

    标签: java


    【解决方案1】:

    您在 case 子句中缺少 break 语句。在System.out.println(firstNum * secondNum); 之后没有break 语句,执行将“失败”,下一个case 子句(打印出1)将被执行,然后是下一个(打印出27.0) ,直到它遇到 break 语句,或整个 switch 子句的结尾。要解决此问题,只需在每个 case 子句的末尾添加 break 语句即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-08
      • 1970-01-01
      • 2019-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多