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

时间:2016-02-08 03:34:14

标签: java while-loop calculator

我正在使用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/");

问题是,我想了解并学习如何做到这一点。我已经添加了部分代码用于指导(如果需要,我可以添加整个代码),但我真正想要的是如何实现这一点的解释,以便我可以自己尝试并完成它。如果这是广泛的,我道歉,如果需要,我很乐意清理任何事情! :)

谢谢大家, Ť

2 个答案:

答案 0 :(得分:0)

只需在#6行插入内部,如下所示:

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

答案 1 :(得分:0)

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