Emmanuel “E-man” Colon Ответов: 2

Мне нужна помощь, что не так с моим кодом? Я не могу заставить его делать какие-либо вычисления


using System;
using System.Diagnostics;

namespace bmimetric.cs
{
    class bmimetric
    {

        public static object Main(string[] args)
        {
            String x, y;
            Console.WriteLine("Please enter weight in kilograms:");
            x = Console.ReadLine();
            int x1;
            x1 = 1 * 50;
            Console.WriteLine("x");
            Console.WriteLine("Please enter height in meters:");
            y = Console.ReadLine();
            int y1;
            y1 = (int)2.4964;
            Console.WriteLine("y");
            Console.WriteLine("The BMI is" + x1 / y1);
        }
                }
}


Что я уже пробовал:

Я пробовал математику, Пау, я пробовал плавать, я пробовал все... кроме того если кто то знает как я могу получить более легкую версию visual studios на mac пожалуйста скажите мне

2 Ответов

Рейтинг:
2

OriginalGriff

Посмотрите на свой код:

            Console.WriteLine("Please enter weight in kilograms:");
            x = Console.ReadLine();
...
            Console.WriteLine("x");
            Console.WriteLine("Please enter height in meters:");
            y = Console.ReadLine();
...
            Console.WriteLine("y");
Год считывает значение, игнорирует его и распечатывает.
Почему вы ожидаете, что он напечатает что-то другое, кроме того, что вы ввели?
Затем вы вычисляете ИМТ:
            int x1;
            x1 = 1 * 50;
...
            int y1;
            y1 = (int)2.4964;
...
            Console.WriteLine("The BMI is" + x1 / y1);
Что - даже если это сработает, а это не так - всегда будет печатать одно и то же значение!

Остановитесь и подумайте о том, что вы делаете: почему вы используете целые числа для вычисления значения, которое не является целым числом? Почему вы читаете высоту в метрах и используете целые числа? Вы получите 1 почти у всех взрослых, редкие 2 и 0 для многих детей!

Целые числа содержат "целые числа": 0, 1, 2, 3, 4 ... (и отрицательные целые числа, конечно же).
Плавающие или двойные числа содержат "дробные числа": 1.6, 3.1415926, 2.7182818, ...

Поэтому, когда вы приведете 2.4964 (который был бы жирафом, а не человеком) к целому числу, вы получите ... 2.

Измените свое приложение для использования double ценности повсюду вместо того, чтобы int, и используйте правильную формулу: Индекс массы тела - Википедия[^] : вес / (высота * высота).

Вам также нужно будет преобразовать строки, которые Вы читаете от пользователя, в действительные числа:
double weight;
if (!double.TryParse(userInputString, out weight)
   {
   Console.WriteLine($"\"{userInputString}\" is not a number!");
   return;
   }

Прекратите бросать код вместе и подумайте о том, что вы пытаетесь сделать в первую очередь.

Вы можете обнаружить, что это помогает: Как написать код для решения проблемы, руководство для начинающих[^]