我有一项任务是在Visual Studio上用C#编写一个简单的程序,从控制台读取你的出生日期,打印现在的年龄和十年后的年龄。
我找到了一个Microsoft教程并决定使用它,但它出错了。这是教程:http://channel9.msdn.com/Series/Twenty-C-Questions-Explained/14
我没有完成任务,我看到以下错误:'The name age does not exist in the current context'
。
namespace AgeAfterTenYears
{
class AgeAfterTenYears
{
static void Main()
{
Console.WriteLine("Enter birthdate - DD/MM/YYYY");
string birthdate = Console.ReadLine();
DateTime bd = Convert.ToDateTime(birthdate);
DateTime curDate = DateTime.Today;
if (bd > curDate)
{
Console.WriteLine("Birthdate must be equal to or before today");
}
else
{
int age = curDate.Year - bd.Year;
}
if (bd.Month > curDate.Month)
{
age--;
}
Console.WriteLine("You are: {0} years old", age);
}
}
}
我找到了不同的解决方案,但我真的很想了解我的错误。可能这是一些愚蠢的事情,但我在第一堂课之后这样做了......
任何帮助都将不胜感激。
答案 0 :(得分:1)
您在age
声明中声明else
:
else
{
int age = curDate.Year - bd.Year;
}
这意味着else语句之外的代码不能"参见"变量age
。它超出了范围。
您应该将变量声明移到第一个if
语句之上。
答案 1 :(得分:1)
您可能应修改else
部分,如下所示:
else
{
int age = curDate.Year - bd.Year;
if (bd.Month > curDate.Month)
{
age--;
}
Console.WriteLine("You are: {0} years old", age);
}
答案 2 :(得分:0)
age
:
if (bd.Month > curDate.Month)
{
age--;
}
int age
如果您想要访问它,则应在if-else
之外宣布。
int age = 0;
if (bd > curDate)
{
Console.WriteLine("Birthdate must be equal to or before today");
}
else
{
age = curDate.Year - bd.Year;
}
if (bd.Month > curDate.Month)
{
age--;
}
答案 3 :(得分:0)
将age
移到else
块之外,并为其指定默认值:
int age = 0;
if(...)
{
...
}
else
{
...
}
答案 4 :(得分:0)
变量age
仅在else
块中声明,并且您尝试在下一个if
块中使用它,其中未声明。
答案 5 :(得分:-1)
using System;
namespace AgeAfterTenYears
{
class AgeAfterTenYears
{
static void Main()
{
var age = 0;
Console.WriteLine("Enter birthdate - DD/MM/YYYY");
string birthdate = Console.ReadLine();
DateTime bd = Convert.ToDateTime(birthdate);
DateTime curDate = DateTime.Today;
if (bd > curDate)
{
Console.WriteLine("Birthdate must be equal to or before today");
}
else
{
age = curDate.Year - bd.Year;
}
if (bd.Month > curDate.Month)
{
age = --set your age here//curDate.Year - bd.Year
}
Console.WriteLine("You are: {0} years old", age);
}
}