您好,我是Stacloverflow的第一篇文章。当我尝试在下面运行此代码时,我收到错误no overload for method 'beräkna' takes 0 arguments
。错误发生在button1
。我该如何解决这个问题?
代码应根据textBox1
点击按钮button1
时注册的出生登记号来计算用户的年龄。
private void Form1_Load(object sender, EventArgs e)
{
}
//4A Konstruera en klass som ska användas för att beskriva personer (människor). Definiera både
// klassnamnet och deklarera 8-10 lämpliga medlemmar.
class människor
{
string förnamn, efternamn, hårfärg, ögonfärg, ursprung;
int personnummer, ålder, skostorlek;
double längd;
public människor()
{
personnummer = 19910611;
}
}
// 5D Deklarera och konstruera kod för en metod som beräknar ålder för en person utifrån
// personnumret. Åldern ska returneras som hela antal år.
public void beräknaÅlder(int personnummer)
{
beräkna(personnummer);
}
//5E Skriv om metoden ovan så att själva åldersberäkningen görs i en gömd (privat) metod som
// metoden i d) använder sig av internt.
private void beräkna(int personnummer)
{
int personnr = personnummer;
bool flagCheck = true;
if (flagCheck == true)
{
int personnummer2 = int.Parse(textBox1.Text);
string nyttpersonnummer = personnummer2.ToString();
DateTime oldDateTime = new DateTime();
oldDateTime = DateTime.ParseExact(nyttpersonnummer, "yyyyMMdd", null);
// DateTime.Now - personnumer;
TimeSpan elapsed = DateTime.Today.Subtract(oldDateTime);
double ålder = elapsed.TotalDays / 365.25;
double helålder = Math.Floor(ålder);
richTextBox1.Text = ("Din ålder är " + helålder.ToString());
}
else if (flagCheck == false)
{
richTextBox1.Text = ("Din ålder är " + personnr);
}
}
private void button1_Click(object sender, EventArgs e)
{
beräkna();
}
}
}
答案 0 :(得分:2)
您没有定义名为beräkna
的方法 至少有一个参数参数。您拥有的签名指定了一个整数,personnummer
。编译器不能为你神奇地生成这个值(并且在这种情况下不能忽略,就好像是可选的),并且你应该提供它。
答案 1 :(得分:2)
您正在调用beräkna
而没有任何争论。但这并没有超载。您应该使用personnummer
作为参数。
尝试使用int
参数;
private void beräkna(int personnummer)
答案 2 :(得分:2)
你在没有参数的情况下调用beräkna
,但没有参数就没有重载。所以你必须传递personnummer
。
beräkna(19910611);
您可以使用此代码计算某人的年龄:
DateTime today = DateTime.Today;
DateTime birthDate;
if (DateTime.TryParseExact(personnummer2.ToString(), "yyyyMMdd", null, DateTimeStyles.None, out birthDate))
{
int age = today.Year - birthDate.Year;
if (birthDate > today.AddYears(-age)) age--;
// output
}