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

java中的简单计算-让用户知道他们必须使用有效的运算符,java,while-loop,calculator,Java,While Loop,Calculator,我正在使用JOptionPane用java编写一个基本的计算器程序。我对这一点非常陌生,非常感谢您对我遇到的问题给予的任何帮助!我曾尝试在网上对此进行研究,但我只在输入扫描仪或用户输入顺序与我不同的地方找到答案 假设我的程序要求用户输入一个数字,然后让他们选择要使用的运算符(+、-、*、/,%),然后要求用户输入第二个数字。完成所有这些操作后,将执行计算并显示结果 在输入第二个数字之前,是否可以使用while循环(而不是do while循环)检查无效的运算符? 我有一个工作代码,在输入第二个号码

我正在使用JOptionPane用java编写一个基本的计算器程序。我对这一点非常陌生,非常感谢您对我遇到的问题给予的任何帮助!我曾尝试在网上对此进行研究,但我只在输入扫描仪或用户输入顺序与我不同的地方找到答案

假设我的程序要求用户输入一个数字,然后让他们选择要使用的运算符(+、-、*、/,%),然后要求用户输入第二个数字。完成所有这些操作后,将执行计算并显示结果

在输入第二个数字之前,是否可以使用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)并以类似方式识别每个部分可能会更快,而不是多次提示用户,如果不成功则返回错误

也许switch语句会看起来更干净。这太完美了-谢谢@simonarame(还有其他人!)。我真的很感谢您快速而礼貌的帮助——作为java新手,拥有它很好:)