我的计划增加了我的年龄。建议

时间:2015-02-21 18:38:56

标签: c# console-application

我正在编写一本教科书,要求我编写一个程序,将我的年龄读到控制台,然后将x年增加到我的年龄。我已经看到了关于这个主题和一些建议的一些评论。但是,我试图让我的版本比建议的更简洁。这是用户BCol在这里提出的一个很好的建议:

Defining AddYears, Calculating age in ten years using C#

我尝试用更少的步骤做同样的事情。这就是我的代码:

Console.WriteLine("Please, enter your age");
string age = Console.ReadLine();

DateTime myNewAge = new DateTime(int.Parse(age));
DateTime yearInFuture = myNewAge.AddYears(10);
Console.WriteLine(yearInFuture); 

它还没有工作;在输入我的年龄并按回车键后,我将于01年1月11日凌晨12点00分到达。我真的很感激任何建议,以及如何使它正确地完成工作。我错过了什么?还有另一种方法吗?我是自学C#。提前致谢。

5 个答案:

答案 0 :(得分:2)

下面的代码将包含两个参数,并在控制台窗口中显示结果。目标是接受一个年龄并通过第二个参数增加它。

Console.WriteLine("Please, enter your age");
string age = Console.ReadLine();

Console.WriteLine("Please, enter number of years to add.");
string addedYears = Console.ReadLine();

Console.WriteLine(int.Parse(age) + int.Parse(addedYears));

答案 1 :(得分:1)

int.Parse(age)

返回一个相对较小的数字,如20或30,代表人的年龄。

但是你要求DateTime构造函数从中创建一个日期,并以错误的方式使用构造函数。您选择了一个带有int

的构造函数重载

https://msdn.microsoft.com/en-us/library/z2xf7zzk(v=vs.110).aspx

但根据文档,该数字代表自0001年1月1日以来已经过去的刻度。

什么日期比0001年1月1日晚20个?我真的相信它仍然是0001的1月1日。

你现在明白了吗?

要解决此问题,您必须使用相同构造函数的另一个重载,可能是允许您传递年份而非刻度的重载。

但请注意,没有构造函数接受年数(人的年龄)。如果一个人是20岁,你就不能超过20岁,而是必须通过2015-20岁作为日期。

我不打算提出解决方案,因为我认为已经有太多的建议。

答案 2 :(得分:0)

你可以简单地使用:

Console.WriteLine(int.Parse(age) + 10);

不创建任何DateTime变量,因为在年龄和时间点之间混合不会有太大意义。

答案 3 :(得分:0)

正如一些人在这里建议的...... 如果您只处理年限,则可以使用intdouble代替DateTime对象。

Console.WriteLine("Please, enter your age");
string age = Console.ReadLine();

int myNewAge; 
int.TryParse(age, out myNewAge);
int yearInFuture = myNewAge + 10;
Console.WriteLine(yearInFuture);

显然,您应该使用try catch并检查错误等。

答案 4 :(得分:0)

主要想法是,如果你想增加 age ,你应该减少解析日期,因为它必须远离现在,所以你应该简单地添加负值AddYears方法。此外,您应该将age添加到当前日期,如下所示:

Console.WriteLine("Please, enter your age");
string age = Console.ReadLine();

DateTime myNewAge = DateTime.Today.AddYears(-int.Parse(age) - 10);
Console.WriteLine(myNewAge);