我正在编程计算器,当我选择第一个选项时,程序停止.我不能输入任何数字.我需要在代码中更改以使方法有效吗?我不知道自己要做什么.
main.cpp中:
#include "stdafx.h"
#include <iostream>
#include "Calculator.h"
using namespace std;
float Calculator::add()
{
cout << "Enter 1 number: ";
cin >> a;
cout << "Enter 2 number: ";
cin >> b;
system("cls");
cout << a + b << endl;
return 0;
}
float Calculator::sub()
{
cout << "Enter 1 number: ";
cin >> a;
cout << "Enter 2 number: ";
cin >> b;
system("cls");
cout << a - b << endl;
return 0;
}
float Calculator::mul()
{
cout << "Enter 1 number: ";
cin >> a;
cout << "Enter 2 number: ";
cin >> b;
system("cls");
cout << a*b << endl;
return 0;
}
float Calculator::div()
{
cout << "Enter 1 number: ";
cin >> a;
cout << "Enter 2 number: ";
cin >> b;
system("cls");
cout << a / b << endl;
return 0;
}
int main()
{
int choose;
Calculator k1;
cout << "1.Add\n";
cout << "2.Sub\n";
cout << "3.Mul\n";
cout << "4.Div\n";
cout << "Choose: ";
cin >> choose;
if (choose == '1')
k1.add();
else if (choose == '2')
k1.sub();
else if (choose == '3')
k1.mul();
else if (choose == '4')
k1.div();
system("pause");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Calculator.h:
#pragma once
#ifndef Calculator_h
#define Calculator_h
class Calculator {
private:
float a, b;
public:
float add();
float sub();
float mul();
float div();
};
#endif
Run Code Online (Sandbox Code Playgroud)
您正在阅读选择为int:int choose;所以您必须将其视为一个:
if (choose == 1)
k1.add();
else if (choose == 2)
k1.sub();
else if (choose == 3)
k1.mul();
else if (choose == 4)
k1.div();
Run Code Online (Sandbox Code Playgroud)
按要求说明:
if (choose == '1')
Run Code Online (Sandbox Code Playgroud)
从句法上讲,这没有错,因为简单地说C++ 将char'1' 隐式地转换为其ASCII码,这是一个值为49的int.
你实际上是在做以下事情:if (choose == 49)而不是if (choose == 1)