こんにちは、ありがとう、私のポストをチェックしてください。一般的にはC#とOopの新機能です。これまで滑らかな学習ができましたが、ユーザーが入力したデータを計算するコンストラクタを作成(および呼び出し)しようとすると、問題にぶつかります。C#を使用して入力を計算するクラスコンストラクタ
可能であれば:3つのクラスを作成したいと思います。
情報を表示し、ユーザー入力を取得するMainDisplayクラス。
bmiの計算を「行う」だけのBMIBlueprintクラス。
bfp(bmi totalを使用する必要がある)を計算するBFPBlueprintクラス。
私は1つのクラスを使用してこの作業を完了しましたが、複数のクラスを使用してこれを行う方法を実際に知りたい/理解したいと思います。私はこれをポーズする前に過去2週間に見つけたすべてのソースを見たり、読んだり、調べたりしましたが、計算を行うコンストラクタを作成してから、ユーザー入力データを使用するためにメインで呼び出すことはできませんでした変数のために。
非常に下のコードは私が1つのクラスでそれをやった方法です(しかし、かなり完成していません)。あなたはそれをすべて無視することができます、私は完全に絶望的であるか、またはチートしようとしているように外に出たくないだけです。
これはこれまで私が行ってきたことです。最初は私のBMIBlueprintクラスです。これは、メインクラスで呼び出す予定のユーザーからの入力に基づいて、bmiの電卓として使用するために作成したものです。私は上記のクラスのコンストラクタを「使用」するにはどうすればよい...
class BMIBlueprint {
public double bmiBefore;
public double bmiAFter;
public BMIBlueprint() { }
public BMIBlueprint(double height, double weight) {
bmiBefore = (height * height) * weight;
}
public BMIBlueprint(double bmiConst) {
bmiAFter = bmiBefore * 703;
}
}
それを動作させるためにしようとしているときにも、これは私の第200異なるバージョンについてですそしてそれは/実際のようになりますことができるものから非常に遠く、おそらくですユーザーがメインクラスで入力したものを計算しますか?または私はそれと一緒にトラックオフですか?私の主なクラスは、私がユーザーの入力を求めてから、それらの値をコンストラクタに配置する場所です。
static void Main() {
Write("Enter weight: ");
double weight = double.Parse(ReadLine());
Write("Enter height: ");
double height = double.Parse(ReadLine());
BMIBlueprint calcBmi = new BMIBlueprint(newBmiOne, newBmiTwo);
//then display after calculated
WriteLine("The finished cal should be shown here: {0:N2}", calcBmi);
私はこの多くのさまざまな方法を試しましたが、これは現在のところです。もし誰かが私はそれを勉強することができたので、絶対に素晴らしいだろうが、おそらくあまりにも多くを求めてコードが何をすべきか投稿する時間や親切を持っている。もしも助けや助言、隠喩、類推がないのであれば、大歓迎です。
以下のコードは、1つのクラスですべてを行ったところです。ほとんどの場合、問題の一部ではなく、無視する必要があります。
static void Main() {
EntranceBlueprint entrance = new EntranceBlueprint();
WriteLine(entrance);
BMIBlueprint bmiCalculator = new BMIBlueprint();
Write("First, enter your weight in lbs: ");
double newWeight = double.Parse(bmiCalculator.weight = ReadLine());
Write("\nGreat, now enter your height in inches: ");
double newHeight = double.Parse(bmiCalculator.height = ReadLine());
bmiCalculator.bmiVar = 703;
double totalBmi = ((newWeight * bmiCalculator.bmiVar)/
(newHeight * newHeight));
WriteLine("\nPerfect! Your bmi is: {0:N2}. With just a few more
inputs we'll have your bfp. ", +totalBmi);
Write("\npress any key to continue");
ReadKey();
BFPBlueprint bfpCalculator = new BFPBlueprint();
Write("According to _ your bfp is more accurate because it takes
into account your age and gender. So enter your age first: ");
double newAge = double.Parse(bfpCalculator.age = ReadLine());
Write("\nGreat, now enter your sex, like this (male or female): ");
string newSex = ReadLine();
if (newAge >= 13 && newSex.ToLower() == "male") {
double totalAdultMale =
(1.20 * totalBmi) - (0.23 * newAge) - (10.8 * 1) - 5.4;
Write("\nYour bfp is: {0:N2} ", totalAdultMale);
if (totalAdultMale > 1 && totalAdultMale < 13)
Catagories(); }
else if (newAge <= 12 && newSex.ToLower() == "male") {
double totalYouthMaleBfp =
(1.51 * totalBmi) - (0.70 *newAge) - (3.6 * 1) + 1.4;
Write("Perfect! Your bfp is: {0:N2}",
else if (newAge >= 13 && newSex.ToLower() == "female") {
double totalAdultFemaleBfp =
(1.20 * totalBmi) - (0.23 * newAge) - (10.8 * 0) - 5.4;
Write("Perfect! Your bfp is: {0:N2} ",totalAdultFemaleBfp); }
else if (newAge <= 12 && newSex.ToLower() == "female") {
double totalYouthFemaleBfp =
(1.51 * totalBmi) - (0.70 * newAge) - (3.6 * 0) + 1.4;
Write("Perfect! Your bfp is {0:N2} ", totalYouthFemaleBfp); }
else { Write("\nYou must have typed something wrong, Try
again"); }
ReadKey();
あなたは物事を計算するためにコンストラクタを使うべきではありません。 'BMIBlueprint'のコンストラクタは、高さと重さをとり、*これらの値を格納するだけです*。次に、身長と体重に基づいてBMIを返す 'GetBMI()'メソッドと、調整に基づいてBMIを返す2つ目のメソッドがあります。 – Rob
これは役に立ちます。 [コンストラクタデザイン](https://msdn.microsoft.com/en-us/library/ms229060(v = vs.110).aspx) – shadow
@Robと同意します。また、クラスインスタンスが構築されると、コンストラクタの* 1つだけが使用されます。例えば、BMIBlueprint bmiCalculator = new BMIBlueprint(); 'は引数のないコンストラクタを選択します。他の2つのコンストラクタは実行されません。 –