【发布时间】:2014-12-10 19:29:28
【问题描述】:
我正在开发这个程序,在该程序中,用户可以输入日期数字或月份和日期来获取另一个。
我遇到的问题是,当创建一个类的实例并将其传递给构造函数时,它正确显示了日期 #,但是当它调用 print 时,我得到了垃圾。如果我将 day 初始化为 0,它会说 day 是 182,但是当调用 print 时,它会打印 0。
它在 DayOfYear() 上完美运行,但不是 DayOfYear(int day)。
我被难住了。
#include <iostream>
#include <iomanip>
using namespace std;
//class declaration
class DayOfYear
{
private:
static const int MonthDays[];
static const string MonthName[];
public:
//static const int MonthDays[];
//static const string MonthName[];
int day;
DayOfYear();
DayOfYear(int day);
DayOfYear(string month_, int day_);
void print();
};
DayOfYear::DayOfYear()
{
cout << "\nEnter a number you would like to convert into a month and day: ";
cin >> day;
//Error check for negative numbers and numbers higher than one year
while(day <= 0 || day > 365)
{
cout << "You must enter a valid number (1 thru 365)" << endl;
cin>>day;
}
//call print() function
print();
}
DayOfYear::DayOfYear(int day)
{
cout<<"\nDay of the year"<<day<<"is";
print();
}
DayOfYear::DayOfYear(string month_,int day_)
{
int count=0;
while (month_ != DayOfYear::MonthName[count])
{count++;}
int result = DayOfYear::MonthDays[count] + day_;
cout<<"Day number= "<<result<<endl;
}
//days of each month into an array
const int DayOfYear::MonthDays[] = {31, 28, 31,30,31,30,31,31,30,31,30,31};
//name of each month into an array
const string DayOfYear::MonthName[] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
void DayOfYear::print()
{
int month = 0;
//int day_=0;
//day_=day;
cout<<"\nprint start day: "<<day<<endl;
while ((DayOfYear::MonthDays[month] < day)&& (month<11)){
day=day-DayOfYear::MonthDays[month];
month++;
cout<<"/nprint month: "<<month<<" day: "<<day<<endl;
}
cout << DayOfYear::MonthName[month] << " " << day;
};
int main()
{
int day=0;
DayOfYear();
DayOfYear halfway(365/2);
//halfway.print();
return 0;
}
【问题讨论】:
-
DayOfWeek?我所看到的只是代码中的 DayOfYear...确保您发布正确的代码,以及您的输入和输出是什么
-
它不可能“在 DayOfWeek() 上完美运行,但在 DayOfWeek(int day) 上却不能完美运行。”,因为您的代码包含这些函数中的任何一个。
-
构造函数真的不应该做这种事情。
标签: c++ class overloading