错误检查简单的计算器
Error checking simple Calculator
如果用户除以 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),这是答案变量的默认值。
相关文章:
- C++ - 在我尝试制作一个简单的计算器时有一个"uninitialized local variable y used"警告
- 创建一个简单的计算器,添加时遇到问题
- 简单计算器的难以理解功能(Stroustrop 编程原理书)
- C++:我的简单计算器程序无法打印出来。我也认为我的变量命名不正确
- DEV简单的C GPA计算器问题
- 在特定条件下的循环和简单计算器的结尾
- C++简单的计算器(没有如果,开关,案例及其种类)
- 简单平均计算器的问题
- 使用命令行和C++的简单计算器
- C++简单的计算器
- 简单的计算器程序出了什么问题
- 简单计算器C++
- 简单的计算器
- C++ - 简单的形状面积计算器返回错误的计算
- 简单计算器尝试重新学习C++.左值错误
- 简单的计算器应该需要2秒钟来修复它的10行
- 简单的计算器问题(不输出答案)
- 模板化一个简单的Boost Proto C++表达式计算器
- 简单平均计算器c++不能正常工作
- 简单的c++计算器代码审查