C #: не показывать результат в строке команды, когда результат равен 0

#c# #visual-studio

#c# #visual-studio

Вопрос:

У меня есть задание для школы на C #. У меня возникла эта проблема со следующим кодом (пример)

 static void Main()
{
    do
    {
        Console.Write("Amount of centimeters?: ");
        double centimeters = double.Parse(Console.ReadLine());

        double meters = centimeters / 100;
        Console.WriteLine($"Amount of meters: {meters}");

        int wholeMeters = (int)meters;
        Console.WriteLine($"Amount of whole meters: {wholeMeters}");

    }while (true);
}
  

Результат:

  • Количество сантиметров?: 350
  • Количество метров: 3,5
  • Количество целых метров: 3

  • Количество сантиметров?: 50
  • Количество метров: 0,5
  • Количество целых метров: 0

Если результат дает 0 для «Количества целых метров», я не хочу показывать строку «Количество целых метров:» в консоли.

Вот так:

  • Количество сантиметров?: 50
  • Количество метров: 0,5

Как я могу этого добиться, используя только пространство имен System?

Комментарии:

1. как насчет использования if

2. Вопрос также может быть, если x != 0 или x > 0 ?

Ответ №1:

Вы наверняка узнаете о структурах управления в самом ближайшем будущем. Просто проверьте значение вашего wholeMeters поля и действуйте в соответствии с результатом

 if(wholeMeters != 0)
   Console.WriteLine($"Amount of whole meters: {wholeMeters}");
  

Ответ №2:

На самом деле это было мое упражнение, и я нашел результат, выполнив код снова шаг за шагом (мне потребовался 1 день !!! :))

 static void Main()
{
    do
    {
        Console.Write("Timespan in seconds?: ");
        int timeInSeconds;

        if (int.TryParse(Console.ReadLine(), out timeInSeconds))
        {
            Console.WriteLine("This is:");

            double amountOfDays = timeInSeconds / 86400;
            if (amountOfDays != 0)
                Console.WriteLine($"- {(int)amountOfDays} days");

            double amountOfHours = timeInSeconds / 3600 - ((int)amountOfDays * 24);
            if (amountOfHours != 0)
                Console.WriteLine($"- {(int)amountOfHours} hours");

            double amountOfMinuts = timeInSeconds / 60 - ((int)amountOfHours * 60) - ((int)amountOfDays * 24 * 60);
            if (amountOfMinuts != 0)
                Console.WriteLine($"- {(int)amountOfMinuts} minuts");

            double amountOfSeconds = timeInSeconds - ((int)amountOfMinuts * 60) - ((int)amountOfHours * 60 * 60) - ((int)amountOfDays * 24 * 60 * 60);
            if (amountOfSeconds != 0)
                Console.WriteLine($"- {(int)amountOfSeconds} seconds");
        }
        else
        {
            Console.WriteLine("Please enter a positive integer!");
        }

    } while (true);
}
  

}

  • Временной интервал в секундах?: 34567788
    • Это:
      • 400 дней
      • 2 часа
      • 9 минут
      • 48 секунд
  • Временной интервал в секундах?: 34567
    • Это:
      • 9 часов
      • 36 минут
      • промежуток времени 7 секунд в секундах?: 2345 Это:
      • 39 минут
      • 5 секунд
  • Временной интервал в секундах?: 45
    • Это:
      • 45 секунд
  • Временной интервал в секундах?: двадцать
    • Пожалуйста, введите положительное целое число!

Я знал, что должен использовать оператор if, но мои (двойные) переменные были объявлены в начале кода, а не непосредственно перед каждым вычислением.

В любом случае спасибо за помощь!