OfficialSub0 Ответов: 2

Как использовать if..else только для положительных целых чисел


Я хочу использовать оператор if..else, чтобы принимать только положительные целые числа без необходимости catch(formatException)

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

//ExceptionHandling.cs
//write a program not catching every exception
using System;

class ExceptionHandling
{
    static void Main(string[] args)
    {
      
        bool continueLoop = true;
        
        do
        {
            try
            {
                Console.WriteLine("Enter the first integer to add:");
                int a = Int32.Parse(Console.ReadLine());
                Console.WriteLine("Enter second integer to add:");
                int b = Int32.Parse(Console.ReadLine());
                int sum = a + b;

               if(a < 0)
                {
                    Console.WriteLine("Please enter a non-negative integer:", a);
                    Console.ReadLine();
                } 
                if (b < 0)
                {
                    Console.WriteLine("\nPlease enter a non-negative integer:", b);
                    Console.ReadLine();

                }
                      
               
                
                    
                    Console.WriteLine("\nTotal is {0}", sum);
                continueLoop = false;

            }//end try

            catch (FormatException formatException)
            {
                Console.WriteLine("\n" + formatException.Message);
                Console.WriteLine("Please enter an integer and try again. \n");

            }//end catch
        }
        while (continueLoop);   //end do-while


        Console.WriteLine("\nPress enter to exit.");
        Console.ReadLine();
    }
}

NotPolitcallyCorrect

Использовать Метод Tryparse

Philippe Mori

Вы действительно хотите снова спросить оба числа, если одно отрицательное?

2 Ответов

Рейтинг:
4

Peter Leow

Попробовать это:

using System;

public class Program
{
	public static void Main()
	{
		int input;
		bool isInteger = false;
		do
		{
			Console.WriteLine("Input a positive integer:");
			isInteger = Int32.TryParse(Console.ReadLine(), out input);
		}
		while (!(isInteger && input >= 0));
		Console.WriteLine("You have input " + input);
	}
}


Philippe Mori

Должна быть функция, как в решении 2...

OfficialSub0

Введите первое целое число для добавления:
-2
Введите второе целое число для добавления:
5
Введите положительное целое число:
2345677
Вы ввели 2345677

Итого 3

Нажмите клавишу enter, чтобы выйти.

Это вывод в командной строке. Извините, если я не уточнил, но я действительно хочу сохранить formatException, чтобы поймать любой вход, который не является целым числом (например,"hello").

Philippe Mori

Если вы используете свой исходный код и оба решения 2 и 3, то решить вашу проблему тривиально... Если вы ожидаете, что мы дадим полное решение, то вы мало чему научитесь и не улучшите себя.

OfficialSub0

Спасибо, теперь я понимаю эту часть! Если я могу спросить, позволяет ли метод TryParse использовать formatException, потому что он пропускает его?

Рейтинг:
0

OriginalGriff

public int GetValue(string prompt)
   {
   int value;
   while (true)
      {
      Console.WriteLine(prompt);
      if (int.TryParse(Console.ReadLine, out value))
         {
         break;
         }
      }
   return value;
   }


Philippe Mori

Валидация отсутствует, чтобы обеспечить положительное число...