【问题标题】:Why methods don't work?为什么方法不起作用?
【发布时间】:2023-03-03 02:02:01
【问题描述】:

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

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

计算器.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

【问题讨论】:

  • choose=='1' 更改为choose==1 和其他类似,这可能是问题所在。
  • 您已声明 int choose,但您正试图将其与字符 (if choose == '1') 进行比较。删除您要比较的数字周围的引号。
  • 有效!谢谢!

标签: c++ oop methods


【解决方案1】:

您正在阅读选择为 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 char '1' 到它的 ASCII code,这是一个值为 49 的 int。

您实际上是在执行以下操作:if (choose == 49) 而不是 if (choose == 1)

【讨论】:

    猜你喜欢
    • 2013-01-22
    • 2018-08-06
    • 2012-01-14
    • 2015-11-07
    • 2015-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多