2017-06-14 112 views
0

我正在编程一个计算器,当我选择例如第一个选项时,程序停止。我无法输入任何数字。 我需要在代码中更改哪些方法才能使这些方法有效? 我不知道我必须做什么。为什么方法不起作用?

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; 
} 

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 
+3

改变'选择=='1''到'选择== 1'和类似的其他,这可能是问题所在。 –

+1

你已经声明了'int choose',但你试图将它与一个字符进行比较('if choose =='1'')。删除您正在比较的数字周围的引号。 –

+0

它的工作原理!谢谢! – abs

回答

5

您正在阅读选择为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(); 

按要求说明:

if (choose == '1') 

这是没有错的语法上来讲,因为只是C++是casting implicitly炭“1”,其ASCII code这是值的int 49

你从字面上做了以下内容:if (choose == 49)代替if (choose == 1)

相关问题