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

因此,我正在用 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..");


        }

   }


}


杨魅力
浏览 101回答 4
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..");    }

一只斗牛犬

这里的问题是您没有完全理解 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语句,这不是你想要的。我建议您真正弄清楚您的代码实际上根据机器指令编译成什么。

偶然的你

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

紫衣仙女

尝试“否则如果”: 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..");}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java