java 中的简单计算 - 让用户知道他们必须使用有效的运算符

simple calculation in java - let user know they have to use a valid operator

我正在 java 使用 JOptionPane 编写一个基本的计算器程序。我对此很陌生,非常感谢对我遇到的问题的任何帮助!我曾尝试在线研究此问题,但我只遇到导入扫描仪或用户输入顺序与我的不同的答案。

我的程序假设要求用户提供一个号码,然后让他们 select 使用运算符 (+,-,*,/,%) 然后要求用户提供第二个号码。所有这一切之后,执行计算并显示结果。

是否可以在输入第二个数字之前使用 while 循环(而不是 do while 循环)来检查无效运算符? 我有在输入第二个数字后检查无效操作员的工作代码,但我想找到一种方法来事先检查它,而不是在输入有效操作员之前重新询问用户操作员。

    while (!useCalculator) { 
    num1 = JOptionPane.showInputDialog(null, "Please enter your first number:");
    numOne = Double.parseDouble(num1);

    input = JOptionPane.showInputDialog(null, "Thank you! What would you like to do?\nPlease choose from the following options:\n+\n-\n*\n%\n/");

    num2 = JOptionPane.showInputDialog(null, "Thank you!\nPlease enter your second number:");
    numTwo = Double.parseDouble(num2);

    if (input != null && input.equals("+"))
    {add(numOne, numTwo);
    result = add(numOne, numTwo); //I have this as a separate mehtod
    JOptionPane.showMessageDialog(null, "The result of " + numOne + " " + input + " " + numTwo + " is: " + result);
    }
    else if (input != null && input.equals("-"))
    {minus(numOne, numTwo);
    result = minus(numOne, numTwo);
    JOptionPane.showMessageDialog(null, "The result of " + numOne + " " + input + " " + numTwo + " is: " + result);
    }
    else if (input != null && input.equals("*"))
    {  multiply(numOne, numTwo);
   result = multiply(numOne, numTwo);
    JOptionPane.showMessageDialog(null, "The result of " + numOne + " " + input + " " + numTwo + " is: " + result);
    }
    else if (input != null && input.equals("/"))
    { divide(numOne, numTwo);
   result = divide(numOne, numTwo);
    JOptionPane.showMessageDialog(null, "The result of " + numOne + " " + input + " " + numTwo + " is: " + result);
    }
    else if (input != null && input.equals("%"))
     { modul(numOne, numTwo);
   result = modul(numOne, numTwo);
    JOptionPane.showMessageDialog(null, "The result of " + numOne + " " +     input + " " + numTwo + " is: " + result);
    }

    else  JOptionPane.showInputDialog(null, "The operator is invalid. Please select a correct operator.\nPlease choose from the following options:\n+\n-\n*\n%\n/");

问题是,我想了解并学习如何做到这一点。我已经添加了部分代码以供指导(如果需要,我可以添加整个代码),但我真正想要的是关于如何完成此操作的解释,以便我可以自己尝试并逐步完成。如果范围很广,我深表歉意,如果需要,我很乐意解决任何问题! :)

谢谢大家, T

只需在第 6 行插入一个内部 while,如下所示:

while(input==null || !(input.equals("+") ||input.equals("*") || input.equals("/") || input.equals("-"))){
    input = JOptionPane.showInputDialog(null, "The operator has to to be either *,+,/,-")
}

词法分析器通常会依次处理识别每个词位(最小单位,如“+”和变量)的完整字符串,因此请求表达式(例如 2*4+5)并识别可能会更快每个部分都以类似的方式进行,而不是多次提示用户,如果不成功则返回错误。