我是java编程的新手,需要帮助检查我正在编写的一个计算器程序!这就是我试图在我的程序中写一个检查:->如果用户输入了错误的公式。例如:如果他们输入“6+2+”并且没有在最后输入数字,然后按“=”,那么应该会有一个警告,他们需要正确地完成公式。我该如何去检查这个呢?基本上我已经准备好了整个计算器,但我只是有点头脑发热,不知道该怎么做。
btnEqual.setOnAction(e ->
{
txtOutput.appendText(" = ");
txtTickerOutput.appendText(" = ");
String number = "";
for(int i = 0; i < numberStack.size(); i++)
{
number += numberStack.get(i);
}
number = number.replaceAll("\\s+", ""); // get rid of whitespace
Integer intNumber = Integer.parseInt(number);
intStack.push(intNumber);
int num = 0;
for(int i = 0; i < numberStack.size(); i++)
{
num = intStack.get(i);
for(int k = 0; k <= operatorStack.size(); k++)
{
// try - catch
try {
String str = operatorStack.get(k);
if(str.contains("+"))
{
num += intStack.get(++i); // pre-increment operators
}
else if (str.contains("-"))
{
num -= intStack.get(++i);
}
else if (str.contains("/"))
{
num /= intStack.get(++i);
}
else if (str.contains("*"))
{
num *= intStack.get(++i);
}
} catch (Exception x)
{
x.toString();
}
}
}
// print calculation to output
String calculation = String.valueOf(num);
if (calculation.contains("=") == false)
{
txtTickerOutput.appendText("Error: The formula does not contain an = sign!");
}
txtOutput.appendText(calculation);
txtTickerOutput.appendText(calculation);
// remove all elements from stacks
numberStack.removeAllElements();
operatorStack.removeAllElements();
intStack.removeAllElements();
});发布于 2020-06-05 22:25:09
根据你的计算器的功能,有多种方法可以做到这一点,但一个显而易见的方法是:
如果你有一个像3+4+这样的公式,并且你想知道它是无效的,因为它以一个操作结束,你可以这样做:
String formula = "3+4+1";
String operations = "-+/%";
if(!formula.equals("")) {
if(operations.contains(formula.substring(formula.length()-1))) {
System.out.println("Bad operation!");
}
}上面的代码只是检查公式中的最后一个字符是否为操作(因为它将在操作字符串中)。在KeyEvent上,你可以检查=,然后插入上面他们拥有的当前公式,如果这是一个糟糕的操作,那么只需取消事件并让用户知道。
https://stackoverflow.com/questions/62206981
复制相似问题