我是C#的新手并且已经从书中做过练习。练习是编写一个程序,从控制台读取我的年龄,并在十年后打印我的年龄。
以下是我根据目前所理解的编写的代码。
namespace Page_108_Age
{
class Program
{
static void Main(string[] args)
{
//Gives date of birth
DateTime dob = new DateTime(1989, 10, 30, 23, 31, 00);
//Gives current age
DateTime today = DateTime.Today;
int age = today.Year -dob.Year;
if (today < dob.AddYears(age)) age--;
//age plus ten years
DateTime agePlusTen = age.AddYears(10);
Console.WriteLine(age);
Console.ReadLine();
}
}
}
我的问题是第16行的AddYears
[DateTime dobPlusTen = age.AddYears(10);
]
给我以下错误......
'int'不包含'AddYears'的定义,也没有扩展名 方法'AddYears'接受'int'类型的第一个参数可能是 发现(您是否缺少using指令或程序集引用?)
我显然错过了一些东西,但现在确定我认为还需要定义AddYears,因为它在我的代码中没有突出显示为结构。
注意:对于“dobPlusTen”的道歉,因为大多数人对此感到抱歉是出生日期的短暂加上十年,这不是它应该是什么,因为我想要Current Age Plus十年,我将其更改为agePlusTen。
答案 0 :(得分:2)
你写道:
DateTime dobPlusTen = age.AddYears(10);
这不响铃吗?
您的变量名为dobPlusTen
,但您指定的值 不是 dob
+ 10。
所以将其改为
DateTime dobPlusTen = dob.AddYears(10);
你会没事的。
编辑根据Ross Dargan在这个答案下面的评论(我没有注意到确切的问题:练习是编写一个程序,从控制台读取我的年龄并打印我的年龄从现在起十年后。),实际上要简单得多。
只是一个
var line = Console.ReadLine();
int agePlus10 = Convert.ToInt32(line) + 10;
Console.WriteLine(agePlus10);
会做的。
答案 1 :(得分:2)
关闭: - )
Age是一个int,因此该方法不存在(它存在于DateTime上)。这应该让你走上正轨: -
class Program
{
static void Main(string[] args)
{
//Gives date of birth
DateTime dob = new DateTime(1989, 10, 30, 23, 31, 00);
//Gives current age
DateTime today = DateTime.Today;
int age = today.Year -dob.Year;
if (today < dob.AddYears(age)) age--;
//age plus ten years
age = age +10;
DateTime agePlusTen = dob.AddYears(age);
Console.WriteLine(agePlusTen.ToShortDateString());
Console.ReadLine();
}
}
答案 2 :(得分:1)
我想有几种方法可以看看这个。
首先,年龄是整数。所以它没有AddYears方法。你可以添加10:
age += 10;
或者,如果要使用DateTime类型的AddYears方法,则需要使用DateTime变量。如
DateTime dobPlusTen = dob.AddYears(10);
答案 3 :(得分:1)
我从计算机编程基础的基础知识做了同样的练习。
在该问题的解决方案和指南中,他们要求使用方法Console.ReadLine()
,int.Parse()
和DateTime.AddYears()
,我的解决方案坚持这三种方法:
Console.WriteLine("Enter Age:");
string Age = Console.ReadLine();
int ma = int.Parse(Age);
DateTime today = DateTime.Now;
// add the 10 years to today's date
DateTime future = today.AddYears(10);
// add your age to future
DateTime futurYear = future.AddYears(ma);
// now subtract them to get your age in 10 years from now
int fa = futurYear.Year - today.Year;
Console.WriteLine("\nIn 10 years you will be:");
Console.WriteLine(fa);
答案 4 :(得分:0)
你应该坚持使用DateTime对象,因为整数没有日期/年的概念(由错误给出)。而是做类似的事情:
int yearsOld = (int)(today.Subtract(dob).TotalDays / 365);
这使您可以使用TimeSpan对象,因此您可以获得确切的年龄而不仅仅是近似值。你可以在之后添加10。
编辑:
当然,这并不是闰年的问题,而且我正在逐渐走向低年,但也许你会明白这一点。
答案 5 :(得分:0)
age
是表示年数的int
,而不是DateTime
。 AddYears
是DateTime
上存在的方法,而不是int
。您应该只是添加10
到年龄,或者从DateTime
添加或减去10年(从today
添加10或从dob
减去10;这些几乎都是同样的)提出正确的数字:
int agePlusTen = age + 10;
// or
DateTime tenYearsFromNow = today.AddYears(10);
int age = tenYearsFromNow.Year - dob.Year;
if (tenYearsFromNow < dob.AddYears(age)) age--;
答案 6 :(得分:0)
我的版本:
Console.WriteLine("Please, enter your age");
string age = Console.ReadLine();
Console.WriteLine("\nIn 10 years you will be:");
DateTime myNewAge = new DateTime(int.Parse(age));
Console.WriteLine(int.Parse(age) + 10);