错误检查简单的计算器

Error checking simple Calculator

本文关键字:计算器 简单 检查 错误      更新时间:2023-10-16

如果用户除以 0,我在检查错误时遇到了一点麻烦。如果用户请求除以 0,则结果字符串应指示执行除以零是非法的。它应该看起来像这样:

您的操作是分区:6/0 非法操作!

但是我不知道如何让它看起来像那样。 到目前为止,我只能std::cout"这是非法的"消息,但输出最终如下所示:

这是非法的!您的操作是: 6/0=-858993460

我还尝试在 else 语句中将结果设置为不同的字符串。它只是忽略它。

我最终会如何编码?

void Simplecalc::setOperation(char oper, int op1, int op2)
{
operation = oper;
number1 = op1;
number2 = op2;
    if(operation == '+')
    {
    answer = number1 + number2;
    type ="addition";
    }
    else if(operation =='-')
    {
        answer = number1 - number2;
        type ="subtraction";
    }
    else if(operation =='*')
    {
        answer = number1 * number2;
        type = "multiplication";
    }
    else if(operation =='/')
    {
        if(number2 != 0)
    {
         answer = number1/number2;
         type = "division";
    }
   else
       {
     cout<<"this is illegal!";
        }

    }
    else if(operation =='%')
    {
        answer = number1%number2;
        type ="modulus";
    }

}
string Simplecalc::getResults()
{
stringstream ss;
    ss <<"Your operation is "<<type<<": "<<number1<<" "<<operation<<" "<<number2<<"="    
    <<answer<<"n";
results =ss.str();

   return results;
}
发生这种情况

是因为您在setOperation()函数之后调用getResult()。即使操作是非法的,也会发生这种情况。

你为什么不为此使用一个标志。如果操作是非法的,则将布尔标志设置为 false。使用该标志来延迟对非法案例的 getResults() 的调用。

if(flag)
{
    getResults();
}

还 { 什么都不做 }

希望能解决你的问题

我认为你设计过度了。没有必要有"设置操作"的概念。您应该只读取输入、执行验证并写入输出,所有这些都在一种方法中完成。

你必须用'0'初始化'answer'。您得到 -858993460(等于十六进制 0xcccccccc),这是答案变量的默认值。