答案 0 :(得分:1)
测试字符串时,应将所有内容转换为常见情况。在您的情况下,您应该将用户输入转换为大写。您可以使用toupper函数
执行此操作以下是您需要更改以使程序正常工作的代码
cout << "Enter transaction type: ";
cin >> choice;
choice = toupper(choice); // Change Here
cout << endl;
答案 1 :(得分:0)
将while((choice != 'C') && (choice != 'D') && (choice != 'E')
更改为while((choice != 'C') && (choice != 'D') && (choice != 'E'))
后,您的代码运行良好。虽然我个人使用的是std::string
而不是char
。
当然,凯撒的答案是有效的 - 我也会改变它。但是,作为评论会更好,因为它不能解决问题。等等,坚持下去。什么问题?即使使用字母菜单选项,您的程序似乎仍然“完美运行”。
程序中唯一的错误是当您尝试将balence
(或三个double
中的任何一个)分配给非数字条目时。当我输入“C”作为初始余额时,我看到了这种怪异:
一遍又一遍。那不好玩。如果我为交易金额键入一封信,也会发生类似的事情:
解决方案:切勿尝试将直接从用户处获取的输入阻塞到不是字符串类型的变量中。使用内置的字符串到数字函数,如atof
或(更喜欢)添加错误处理程序,如下所示:
if (std::cin >> dbl)
{
//input is a double. handle that here.
}
else
{
//input isn't a double. handle that here.
}
顺便说一句,它是拼写平衡,而不是balence;)