2016-04-18 22 views
0

クラスの年齢を計算する方法の理解に問題があります。Windowsフォームでクラス '年齢'メソッドを使用するC#

私は計算方法について理解していますが、プログラム内でどのように使用するのか分かりません。

私はPersonと呼ばれる抽象クラスを持ち、Person、Name、DOBなどのプロパティがあります。次にPersonから継承する2つのクラス、DentistとPatientがあります。私のプログラムは、このメソッドを作成したDOBの年齢を計算する必要があります(これは調査済みです)。その方法の使用は難しいと思っています。

これは私の方法である:

public int AgeInYears(DateTime bday) 
{ 
     DateTime now = DateTime.Today; 
     int age = now.Year - bday.Year; 
     if (bday.AddYears(age) > now) 
      age--; 
     return age; 
} 

私も、私は歯科医と患者のためのArrayListを持っている手術クラスは、(私は配列リストは悪いことを知っている - それは私の講師からの割り当ての命令だった)しています。私のフォームでは、これらのarraylistsを使用して、歯科医または患者のいずれかが選択されたときにテキストボックスを設定します。

私の方法の計算とArraylistのDOBをtxtAgeボックスに入力する必要があります。

誰かが、私はあなたがそれを呼び出し、それをDateTimeオブジェクトを渡す必要があります方法を使用するには、このしてください

答えて

0

非常に簡単です。 はあなたが説明するようにあなたのメソッドを呼び出す必要がありgjttt1の答えによると:

Int age = AgeInYears(dob) 

「のInt年齢は」変数の宣言です。この変数には計算された年齢が格納されます。

今すぐステップバイステップ/行ごとにあなたの方法。

public int AgeInYears(DateTime bday) 

方法の宣言です。名前は 'AgeInYears'、 '(DateTime bday)'は入力パラメーター、 'int'は戻り値の型、 'public'は修飾子です。これは、正しいDateTimeでなければならない適切な入力パラメータ(bday = birthday)を指定すると、AgeInYearsメソッドがInteger(System.Integer)を返すことを意味します。

DateTime now = DateTime.Today; 

この行は、メソッド本体の内部変数の宣言です。現在の日付であるメソッド 'DateTime.Today'の値を格納します。

int age = now.Year - bday.Year; 

値を持つ別の整数変数宣言。この計算は簡単なことです:現在の年は変数 'now'から入力パラメータ 'bday'から取った年を引いたものです。

if (bday.AddYears(age) > now) 
     age--; 

この文は、入力パラメータ「BDAY」に計算し、年齢を追加し、現在のDateTime(「今」変数の値)にそれをcomapres「が」。ステートメントから 'true'が返された場合、計算された年齢は1ずつ減少します。この操作は、年齢計算の混乱のために実行されます。私にそのことを説明させてください: もし誰かが2000-12-29に生まれ、現在の日付は2016-04-19なので、計算年齢は16歳です。しかし、それは15歳と16歳になるので真実ではありません2016-12-29年に達成されました。

return age; 

変数 '年齢'に格納された計算された年齢値を返します。

EDIT: TextBoxとArrayListについて気付いたばかりです。 あなたがTextBoxコントロールに年齢値を移入する必要がある場合は、この基本的な命令でこれを達成することができます

YourTextBoxName.Text = age.ToString(); 

の年齢は '変数最初に宣言され、それが法「AgeInYears」の値が格納されています。 'Text'プロパティはTextBoxコントロールにテキスト(文字列)を表示するように指示します。このことができますArrayList.Add() on MSDN

希望:

YourArrayListName.Add(age); 

あなたがここにArrayList.Add()メソッドの詳細を読むことができます:あなたはArrayListに「年齢」を追加する必要がある場合 は、あなたがこの命令を使用する必要があります。 :)

+0

このメソッドを実行していただきありがとうございます、それは今意味があります。私は何をするつもりなのか理解しています。問題はメソッドを呼び出すことです。私のクラスはpublicであり、メソッドはpublicであり、Person p = new Person()をインスタンス化しています。私の形式では、まだメソッドが存在しないと述べています。 これは私が最初のインスタンスで行ったことですが、メソッドが利用できないため、メソッドが正しく呼び出されていないと仮定していました。 – Griff

+0

申し訳ありませんが、私の英語はあまり良くありません。今はすべてが分かりますか、それとももっと説明が必要ですか? –

+0

はい、非常にはっきりしていますが、テキストボックスに印刷する方法もわかっていますが、問題を引き起こしているメソッドが呼び出されています。私は私のフォームでPersonクラスを呼び出しましたが、私はPersonクラスのメソッドを使用できません。 – Griff

0

を行う方法についての正しい方向に私を指すでしたどちらか。それは年齢であるintを返します。例:dobはあなたPersonオブジェクトのいずれかからの誕生日である

Int age = AgeInYears(dob) 

これは非常に簡単なものです。

+0

ありがとうございました。申し訳ありませんが、このことをもう少し深く説明することができますか?私はプログラミングに新鮮なので、すみません。 – Griff

+0

私はあなたのコードを理解していますが、私の質問のポイントは私のプログラム内でこれをどのように実装するかです。あなたは私に1行のコードを与えて、どのように使用するのか説明していません。 – Griff

+1

@グリフ私はそれが意図的だったと思います。このサイトは質問が答えられるように存在するので、他の人があなたの宿題をすることはできません。ここにあなたの答えをスプーンフィードする人がいるかもしれませんが、それは長期的にあなたを助けるつもりはありません。 –

関連する問題