我的家庭作业是创建一个名为Currency的类,使用整数作为美元的基本类型。我必须使用这些公共方法..... 现在我删除了“美分”部分和“减法”部分,因为我假设一旦我弄清楚如何为“美元”货币类型做“加法”,我就可以做到。
无论我把什么投入“货币添加(int Dollars);”我无法让我的代码工作=。 我做过诸如totalDollars + = Dollars,return totalDollars,或者只是美元+ =美元等等。
输出总是垃圾:“ - 8353513636”。 或者有时我在构造函数中放入的数字。
我似乎无法让它通过号码并将其保留在那里(最终想让它保持运行总数),并在我完成后输出它。我缩短了我的代码,因为我的代码唯一的问题是处理“类”/货币数据类型的部分。它不会起作用。
有一次它告诉我它无法从int转换为Currency数据类型
这是我到目前为止的代码:
/* Program By:
Date: 4/29/2011
Class:
*/
#include <iostream>
#include <iomanip>
#include <fstream>
#include <cstring>
#include <cstdlib>
#include <cctype>
#include <cmath>
#include <ostream>
using namespace std;
// Currency Class
class Currency
{
private:
int Dollars;
public:
Currency();
Currency(int Dollars);
Currency Add(int Dollars);
int GetDollars();
};
Currency::Currency()
{
Dollars = 0;
}
Currency::Currency(int Dollars)
{
}
// Add
Currency Currency::Add(int Dollars)
{
// Have put totalDollars += Dollars, etc.
// Have also put a "return" value here.
}
int Currency::GetDollars()
{
return Dollars;
}
int main()
{
Currency payroll;
int currDollars;
cout << "Please enter a dollar mount" << endl;
cin >> currDollars;
payroll.Add(currDollars);
cout << "Current Amount is: " << payroll.GetDollars() << endl;
return 0;
}
我做错了什么?我已经在这里待了好几个小时了,明天我需要把它拿进去。 帮助很多!!!!
答案 0 :(得分:2)
好的,我们在这里有一个范围问题。
由于您的参数和成员都命名为Dollars,您需要使用this-Pointer指定要添加的变量。
this->Dollars += Dollars;
如果不这样做,该参数会隐藏该成员,因此您实际上只是将新金额添加到自身,然后将其丢弃。
答案 1 :(得分:2)
以下是一些可能有用的提示:
在您的Currency类中,我建议使用命名约定,这样您就可以将构件变量与函数中的参数区分开来。似乎在区分Dollars
成员变量和也称为Dollars
的参数时可能存在一些混淆。一种可能的命名约定是将成员变量命名为“my”,因为它们属于该类。还有其他方法可以使用this
指针来处理这种情况,但您可能还没有学过指针。
class Currency
{
private:
int myDollars;
public:
Currency();
Currency(int dollars);
void Add(int dollars); // changed this to return void - see below
int GetDollars();
};
我看到的另一个问题是,使用int Dollars
参数的函数似乎对参数值没有任何作用。我知道你正在试图弄清楚如何做到这一点,所以这里是Add函数的一个例子。对于Add,我现在只是让它返回void,所以你不必处理从函数中返回this
对象。
void Currency::Add(int dollars)
{
myDollars += dollars;
}
int Currency::GetDollars()
{
return myDollars;
}
我希望这有点帮助。
答案 2 :(得分:2)
无论何时用C或C ++,Java或任何语言编写代码,都需要注意变量名称。
这里发生的事情是你在类中使用了Dollars作为变量名,在函数参数中使用了和。该参数会覆盖该类,无论您对Add中的Dollars做什么,都不会对类中的Dollars变量产生任何影响。
尝试将Dollars参数重命名为x
等描述性内容。
答案 3 :(得分:1)
我认为您不需要在Currency
函数中返回Add
。
您的Add
函数应如下所示:
void Currency::Add(int dollarsToAdd) {
Dollars += dollarsToAdd;
}
答案 4 :(得分:1)
您当前的代码存在许多问题。
尝试一下:
class Currency
{
private:
int m_dollars;
int m_cents;
public:
Currency(int dollars, int cents);
Currency Add(int dollars, int cents);
int GetDollars();
int GetCents();
};
Currency::Currency(int dollars, int cents)
{
m_dollars = dollars;
m_cents = cents;
}
Currency Currency::Add(int dollars, int cents)
{
if (m_cents + cents >= 100)
return Currency(m_dollars + dollars + 1, m_cents + cents - 100);
return Currency(m_dollars + dollars, m_cents + cents);
}
int Currency::GetDollars() { return m_dollars; }
int Currency::GetCents() { return m_cents; }
void main()
{
int currDollars;
int currCents;
cout << "Please enter a whole dollar amount:" << endl;
cin >> currDollars;
cout << "Please enter a cents amount:" << endl;
cin >> currCents;
Currency payroll(currDollars, currCents);
cout << "Current Amount is: "
<< payroll.GetDollars()
<< "."
<< payroll.GetCents()
<< endl;
cout << "Please enter a whole dollar amount to add:" << endl;
cin >> currDollars;
cout << "Please enter cents to add:" << endl;
cin >> currCents;
payroll = payroll.Add(currDollars, currCents);
cout << "Updated Amount is: "
<< payroll.GetDollars()
<< "."
<< payroll.GetCents()
<< endl;
}