C # чтение целочисленного ввода - PullRequest
0 голосов
/ 08 июня 2018

Мне нужна быстрая помощь по вводу целых чисел пользователя.Если я использую строку, у меня нет проблем, но когда я пытаюсь преобразовать ее в целое число, программа вылетает.какие-нибудь быстрые исправления?

string a = Console.ReadLine();
int age = Convert.ToInt32(a);
Console.WriteLine("What is your age?" + age);

if ((age >= 1) && (age <= 6))
{
    Console.WriteLine("you are in Preschool");
}
else if ((age == 7) && (age >= 13))
{
    Console.WriteLine("you are in Elementary School");
}
else if ((age == 14) && (age >= 18))
{
    Console.WriteLine("You are in High School");
}
else if ((age == 19) && (age >= 26))
{
    Console.WriteLine("You are probably in College");
}
else
{
    Console.WriteLine("you probaby have graduated already");
}

Ответы [ 3 ]

0 голосов
/ 08 июня 2018

Попробуйте: - Если ваши условия ложные, измените их, как показано ниже.

string a = Console.ReadLine();
 int age = -1;
 if(int.TryParse(a,out age))
 {
    Console.WriteLine("What is your age?" + age);
    if (age <= 0)
    {
        Console.WriteLine("Wrong input");
        System.exit(0);
    }
    else if ((age >= 1) && (age <= 6))
    {
        Console.WriteLine("you are in Preschool");
    }
    else if ((age >= 7) && (age <= 13))
    {
        Console.WriteLine("you are in Elementary School");
    }
    else if ((age >= 14) && (age <= 18))
    {
        Console.WriteLine("You are in High School");
    }
    else if ((age >= 19) && (age <= 26))
    {
        Console.WriteLine("You are probably in College");
    }
    else
    {
        Console.WriteLine("you probaby have graduated already");
    }
}
0 голосов
/ 08 июня 2018

Еще один способ решить проблему - использовать немного меньше кода.Для меня это будет легче читать, если менее сложные заявления.Смена оператора не поможет в этом случае из-за возрастного интервала.Это просто усложняет.

string text = String.Empty;
int age;
Console.WriteLine("What is your age?");

if (int.TryParse(Console.ReadLine(), out age))
  {
    if (age > 26)
      text = "You probaby have graduated already.";
    else if (age < 1)
      text = "You probaby not started Preschool.";
    else if (age < 7)
      text = "You are in Preschool.";
    else if (age < 14)
      text = "You are in Elementary School.";
    else if (age < 19)
      text = "You are in High School.";
    else
      text = "You are probably in College.";
    Console.WriteLine(text);
  }
}
0 голосов
/ 08 июня 2018

первое изменение в вашем коде должно правильно обрабатывать целочисленное значение

 int age = -1;
 if(int.TryParse(a,out age))
 {
   //rest of code 
 }

(проблема) другие изменения - это ваше состояние

 else if ((age == 7) && (age >= 13))

, которое не будет работатькогда вы делаете && операцию и говорите age==7 && age>=13, что означает, что возраст должен быть 7 лет и должен быть больше 13

, что относится ко всем вашим условиям

  else if ((age == 7) && (age >= 13))
    {
        Console.WriteLine("you are in Elementary School");
    }
    else if ((age == 14) && (age >= 18))
    {
        Console.WriteLine("You are in High School");
    }
    else if ((age == 19) && (age >= 26))
    {
        Console.WriteLine("You are probably in College");
    }

кажется, что должнобыть (решение)

   else if ((age >= 7) && (age <= 13))
    {
        Console.WriteLine("you are in Elementary School");
    }
    else if ((age >= 14) && (age <= 18))
    {
        Console.WriteLine("You are in High School");
    }
    else if ((age >= 19) && (age <= 26))
    {
        Console.WriteLine("You are probably in College");
    }

Полное решение

 Console.WriteLine("What is your age?");
 string a = Console.ReadLine();
 int age = -1;
 if(int.TryParse(a,out age))
 {
    Console.WriteLine("your age is : " + age);

    if(age < 1)
    {
       Console.WriteLine("Input value should be greater then 0");
    }
    else if ((age >= 1) && (age <= 6))
    {
        Console.WriteLine("you are in Preschool");
    }
    else if ((age >= 7) && (age <= 13))
    {
        Console.WriteLine("you are in Elementary School");
    }
    else if ((age >= 14) && (age <= 18))
    {
        Console.WriteLine("You are in High School");
    }
    else if ((age >= 19) && (age <= 26))
    {
        Console.WriteLine("You are probably in College");
    }
    else
    {
        Console.WriteLine("you probaby have graduated already");
    }
 }
 else 
 {
      Console.WriteLine("InCorrect input value");
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...