【问题标题】:Java Switch Statement: creating a calculator errorJava Switch 语句:创建计算器错误
【发布时间】:2014-03-05 03:42:49
【问题描述】:

我想知道是否有人能看出我的代码有什么问题。它可以工作,只是程序不承认我的 switch 语句 - 我搜索了很多问题,但由于我是新手,我显然遗漏了一些东西。

import java.util.Scanner;
class Calmlr1 {
    public static void main(String[]args) {
        Scanner input = new Scanner(System.in);
        String anotherOption = "y", operatorOpt= "a";
        int no1=0, no2=0;
        double result= 0;
        System.out.println ("Welcome to the online calculator! Let's begin...");
        while (anotherOption.equalsIgnoreCase ("y")) {
            System.out.println ("Please enter your 1st number: ");
            no1 = input.nextInt();
            System.out.println ("Please confirm your operator:\n1 = +\n2 = - \n3 = *\n4 = /");
            operatorOpt = input.next ();
            System.out.println ("Please enter your 2nd number: ");
            no2 = input.nextInt();

            switch(no1) {
              case 1:
                result=no1+no2;
                break;
              case 2:
                result=no1-no2;
                break;
              case 3:
                result=no1*no2;
                break;
              case 4:
                result=no1/no2; 
              default: 
                result = 0 ;
                break;
            }
            System.out.println("Your total calculation is: "+result);
            System.out.println("Would you like to do another sum? y/n ");
            anotherOption=input.next();
        }
    }
}

【问题讨论】:

  • 没关系,我想通了 yaaaaaayyyy!!!! :) 需要将 operatorOpt 更改为 int 而不是 string 并且它可以工作:)

标签: java calculator


【解决方案1】:

您应该使用switch(operatorOpt)。现在您正在打开第一个号码。

你还需要改变:

int operatorOpt= 0;

operatorOpt = input.nextInt();

也就是说,如果你想让你的 switch 语句保持不变。另请参阅@Daniel Imms 答案以获取其他错误修复。

【讨论】:

  • :) 谢谢你,我在看我的书时意识到 - 当它起作用时真是一种解脱谢谢你的评论:)
【解决方案2】:

尝试在case 4 末尾添加break

case 4:
result=no1/no2; 
break;

编辑 J L 的回答是主要问题,但这是另一个会打破分裂的问题。

【讨论】:

  • 谁先得到这两个答案的组合,谁就得到我的选票。编辑 - Hugo Sousa 最先得到它。
【解决方案3】:

您的switch 应该在operatorOpt 而不是no1

另外,您在case 4 中缺少break。所以,如果你想做一个除法,你会得到0作为结果。

用户对operatorOpt 的输入应使用input.nextLine() 完成。或者,如果您想保持与 input.nextInt() 相同的 switch 语句。

应该是这样的:

switch(operatorOpt)
{
    case "+":
    result=no1+no2;
    break;
    case "-":
    result=no1-no2;
    break;
    case "*":
    result=no1*no2;
    break;
    case "/":
    result=no1/no2; 
    break;
    default: 
    result = 0 ;
    break;
}

【讨论】:

  • 假设他们使用的是 Java 7+。
【解决方案4】:

您的 switch 语句应该在“operatorOpt”上,而不是在“no1”上,因为您想检查运算符并基于您想要进行计算。但是,您必须使用 JDK1.7 才能在 Switch 语句中使用 String,因为以前的 JDK 版本不支持 String Switch。 此外,您应该在案例 4 中使用“break”。

【讨论】:

    【解决方案5】:

    你的开关应该在 operatorOpt 而不是 no1。

    你可以这样使用

    switch(operatorOpt)
    {
        case "+":
            result=no1+no2;
            break;
        case "-":
            result=no1-no2;
            break;
        case "*":
            result=no1*no2;
            break;
        case "/":
            result=no1/no2; 
            break;
        default: 
            result = 0 ;
            break;
    }
    

    【讨论】:

    • 你的回答与 30 分钟前的 this answer 几乎相同...为什么要发布相同的内容?
    • 我搜索并找不到类似的东西,可能需要编辑上一个问题的标签。我们在这里学习的负面因素越来越少,而不是抱怨“重复的问题”。
    猜你喜欢
    • 2019-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-21
    相关资源
    最近更新 更多