我正在使用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/");
问题是,我想了解并学习如何做到这一点。我已经添加了部分代码用于指导(如果需要,我可以添加整个代码),但我真正想要的是如何实现这一点的解释,以便我可以自己尝试并完成它。如果这是广泛的,我道歉,如果需要,我很乐意清理任何事情! :)
谢谢大家, Ť
答案 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,以相似的方式识别每个部分而不是多次提示用户,如果他们不成功则返回错误。