为了账号安全,请及时绑定邮箱和手机立即绑定

在java计算器中验证用户输入的问题

在java计算器中验证用户输入的问题

杨魅力 2024-01-28 16:56:49
因此,我正在用 Java 编写计算器代码作为家庭作业,我想在最后包含一个 else 语句,如果用户没有输入有效的运算符,则会收到错误消息。问题是,即使我输入有效的运算符,它也会打印结果,然后打印 else 错误消息。任何帮助,将不胜感激。public class Main {    public static void main(String[] args){        Scanner inputi=new Scanner(System.in);        double num1,num2;        char operator;        System.out.println("Please enter the first number: ");        num1=inputi.nextDouble();        System.out.println("Please enter the second number: ");        num2=inputi.nextDouble();        Scanner oper=new Scanner(System.in);        System.out.println("Please enter the operator, the operators are +,-,*,/,%");        operator = oper.next().charAt(0);        if(operator== '+') {             System.out.println("The sum of these numbers is: "+(num1+num2));        }        if(operator=='-') {            System.out.println("The diff of these numbers is: "+ (num1-num2));               }        if(operator=='*') {            System.out.println("The result of this multiplication is: "+(num1*num2));        }        if(operator=='/') {            System.out.println("The division is: "+(num1/num2));        }        if(operator=='%') {            System.out.println("The module is: "+(num1%num2));            }                     else {            System.out.println("Please just pick an operator..");        }   }}
查看完整描述

4 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

我建议使用 switch 代替:


     switch (operator) {

        case '+':

            System.out.println("+");

            break;

        case '-':

            System.out.println("-");

            break;

    /* Other operators */

        default:

            System.out.println("Please just pick an operator..");

    }


查看完整回答
反对 回复 2024-01-28
?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

这里的问题是您没有完全理解 if else-if else 语句。

“If”的意思是:如果这个条件语句为真,则执行括号中的代码。

“If-else”的意思是:如果上面的语句(if 和 else-if)不成立,则执行此代码。

“else”的意思是:如果上面的语句(if 或 else-if)不成立,则执行此代码。

鉴于此,我确信您看不到您的错误。您所有的“if”语句都会评估是否满足此条件,然后执行此操作。然而您确实想要使用“else-if”,如果这是真的,则仅执行以下代码,而排除其余条件。您让 else 子句选择默认值是正确的,但是由于您没有使用“else-if”,因此它实际上会编译为 if 该语句不正确( else 子句之前的语句):

    if(operator=='%') {
        System.out.println("The module is: "+(num1%num2));    
    }

然后执行else语句,这不是你想要的。

我建议您真正弄清楚您的代码实际上根据机器指令编译成什么。


查看完整回答
反对 回复 2024-01-28
?
偶然的你

TA贡献1841条经验 获得超3个赞

你有“if if if if else”你想要“if else if else if else”。您的else当前仅适用于if (operator == '%')



查看完整回答
反对 回复 2024-01-28
?
紫衣仙女

TA贡献1839条经验 获得超15个赞

尝试“否则如果”:


 if(operator== '+') { 

            System.out.println("The sum of these numbers is: "+(num1+num2));

        }

else if(operator=='-') {

            System.out.println("The diff of these numbers is: "+ (num1-num2));       

        }

else if(operator=='*') {

            System.out.println("The result of this multiplication is: "+(num1*num2));

        }

else if(operator=='/') {

            System.out.println("The division is: "+(num1/num2));

        }

else if(operator=='%') {

            System.out.println("The module is: "+(num1%num2));    

        }             

        else {

            System.out.println("Please just pick an operator..");

然而, switch 语句会更清晰:


switch(operator) {

 case '%': 

  System.out.println("The module is: "+(num1%num2));    

  break; 

 default:

  System.out.println("Please just pick an operator..");

}


查看完整回答
反对 回复 2024-01-28
  • 4 回答
  • 0 关注
  • 100 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信