2017-06-14 113 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)

相關問題