-1

こんにちは、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();

    }
}

}

4

3 に答える 3

2

少なくとも1つのパラメータ引数を必要beräknaとしないnamedという名前のメソッドが定義されていません。あなたが持っている署名は、整数が期待されることを指定します。コンパイラーはこの値を魔法のように生成することはできず(この場合はオプションのように無視することはできません)、ユーザーがこの値を提供することが期待されます。personnummer

于 2013-01-11T10:03:46.677 に答える
2

beräknaあなたは何の議論もなしに呼んでいます。しかし、これには過負荷はありません。パラメータとして使用する必要がpersonnummerあります。

パラメータを試してintください。

private void beräkna(int personnummer)
于 2013-01-11T10:04:14.430 に答える
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 
}
于 2013-01-11T10:04:33.327 に答える