Tenet1001 Ответов: 3

Я пытаюсь сделать проверку Y/N для ввода строки чтения, но я не могу преобразовать ввод во что-то, где я мог бы проверить, что это такое.


using System;

namespace AgeGuesser
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Input your age please: ");
            int input = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Is this right?(Y/N): " + input);
            var test = Console.ReadKey();
            bool yes = Convert.ToBoolean(ConsoleKey.Y);
            bool no = Convert.ToBoolean(ConsoleKey.N);
            Convert.ToBoolean(test);
            if (test = yes) //This doesn't work because it won't convert bool to consolekeyinfo
            {
                
            }
        }
    }
}


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

Я действительно не помню, что я пробовал, но все, что я знаю, это то, что это не сработало, но я знаю, что это были просто небольшие вариации проблемного кода. Извиняюсь.

3 Ответов

Рейтинг:
2

sOwlO

Вы без всякой причины все усложняете. Вам не нужно использовать bool там.

using System;

namespace AgeGuesser
{
    class Program
    {
        static void Main(string[] args)
        {
            string yes = "Y";
            Console.WriteLine("Input your age please: ");
            int input = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Is this right?(Y/N): " + input);
            string input2 = Console.ReadLine();
            if (yes == input2)
            {
                Console.WriteLine("Mgergerge");
            }
            else
            {
                Console.WriteLine("eqwrq");
            }
            Console.ReadKey();
        }
    }
}


Tenet1001

Я пытаюсь сделать так, чтобы когда вы нажимаете клавишу "Y", это считается да, но если вы нажимаете клавишу "N", это делает обратный вызов или любую другую команду, которая заставляет его вернуться к началу. Это всего лишь проект, чтобы я мог разобраться в концепциях. Я делаю этот проект, чтобы понять bool и ConsoleKeyInfo (я думаю).

Рейтинг:
1

Gerry Schmitz

if (test = yes) \\This doesn't work because it won't convert bool to

Легко ошибиться; это "==" для "сравнения"; "=" только для назначения.

("! = "означает "не равно"; ">="; и т. д.)


Рейтинг:
0

BillWoodruff

1. Почему бы не проверить, вводит ли пользователь число ... защитное программирование ! см. раздел Использование In32.Попробуйте проанализировать этот пример.

2. почему бы не ограничить количество попыток, которые пользователь может сделать, чтобы избежать бесконечного цикла ?

using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            int agevalue;

            int ntries = 2;
            int tries = 1;

            while (true)
            {
                Console.WriteLine($"try: #{tries} | Input your age please: ");

                var age = Console.ReadLine();

                if (Int32.TryParse(age, out agevalue))
                {
                    // add range checking here ?

                    Console.WriteLine("Is this right?(Y/N): " + agevalue);

                    if (Console.ReadKey().Key == ConsoleKey.Y) break;

                    Console.Clear();
                }

                if (++tries > ntries) break;
            }
        }
    }
}
Еще одна полезная вещь, которую можно добавить, - это проверка того, находится ли введенный возраст в определенном диапазоне, который имеет смысл в контексте вашего приложения.


Tenet1001

"если (Int32.Метод tryparse(возраст, из agevalue))"
Что вы здесь проверяете? Вы проверяете, чтобы увидеть, если метод tryparse работает?
Также:
Какое отношение в то время как (правда) не на самом верху?

BillWoodruff

Лучший способ понять это-создать консольное приложение с помощью этого кода, установить точки останова в каждой строке, запустить его и, когда вы нажмете каждую точку останова, проверить текущие значения. Во-вторых, посмотрите, что делают оператор while и метод TryParse. Выясните, что произойдет, если в этом коде не будет оператора break.

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

Я абсолютно уверен, что вы можете и будете развиваться как программист, используя эти методы ... через некоторое время они станут привычными ... так же привычно, как пользоваться отверткой или молотком :)

твое здоровье, Билл