Привет и спасибо за проверку моего сообщения. Новое для C# и Oop в целом. До сих пор обучение было гладким, но у меня возникают проблемы, когда я пытаюсь создать (и вызвать) конструктор, который вычисляет ввод данных пользователем.Конструктор классов, который вычисляет ввод с использованием C#
Если возможно: я хотел бы создать 3 класса.
Класс MainDisplay, который отображает информацию и получает пользовательский ввод.
Класс BMIBlueprint, который «только» делает расчет для bmi.
Класс BFPBlueprint, который вычисляет bfp (требуется использовать общее количество bmi).
Я выполнил эту задачу, используя один класс. Но мне бы очень хотелось узнать/понять, как это сделать, используя несколько классов. Я смотрел/читал/изучал каждый источник, который мог найти за последние 2 недели, прежде чем создавать это, но я не смог понять, как создать конструктор, который выполняет расчет, а затем называть его основным для использования пользовательских входных данных для переменных.
Самый нижний код - это то, как я сделал это в одном классе (но не совсем закончен). Вы можете игнорировать все это, хотя я просто не хочу оторваться, как будто я совершенно безнадежен или пытаюсь обмануть.
Это то, что у меня есть до сих пор. Во-первых, мой класс BMIBlueprint, который я создал, просто для использования в качестве калькулятора для bmi на основе ввода от пользователя, который я планирую вызвать в своем MainClass. Кроме того, это мой 200-й другой версии, пытаясь заставить его работать, и это, вероятно, очень далеко от того, что он может/должен выглядеть на самом деле ...
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;
}
}
Как «использовать» конструктор выше класса для рассчитать, что пользователь вводит в мой основной класс? или я в порядке с ним? Мой основной класс ниже, где я запрашиваю ввод пользователя, затем помещаю эти значения в свой конструктор.
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);
Я пробовал это много разных способов, но именно здесь я сейчас; Если у кого-то есть время или доброта, чтобы опубликовать код, который должен быть с парочками, чтобы я мог изучить его, было бы абсолютно здорово, но, возможно, слишком много просило. Если бы не была оказана никакая помощь/совет/метафоры/аналогии.
Код, где я сделал все это в одном классе - почти все, но не является частью вопроса и его следует игнорировать.
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 должен принимать высоту и вес, а * хранить только эти значения *. Тогда у вас будет два метода: 'GetBMI()', который возвращает BMI на основе высоты и веса, и второй метод, который возвращает BMI на основе настройки. – Rob
Это было бы полезно. [Конструктор Конструктор] (https://msdn.microsoft.com/en-us/library/ms229060 (v = vs.110) .aspx) – shadow
Согласен с @Rob. Кроме того, когда экземпляр класса создается, будет использоваться только * один * конструкторов. Например, BMIBlueprint bmiCalculator = новый BMIBlueprint(); 'будет выбирать конструктор без аргументов - остальные 2 конструктора не будут выполнены. –