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)并识别可能会更快每个部分都以类似的方式进行,而不是多次提示用户,如果不成功则返回错误。
我正在 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)并识别可能会更快每个部分都以类似的方式进行,而不是多次提示用户,如果不成功则返回错误。