Ложное значение из пользовательского ввода - PullRequest
1 голос
/ 30 января 2020

Я пытаюсь сохранить значение, полученное с помощью Console.Read (), в виде целого числа, но, что бы я ни печатал на клавиатуре, консоль всегда выдает 13. Я пытался скопировать пример кода, который определенно должен работать , но я все еще получаю только 13 в качестве значения.

using System;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Read();
            int Test = Console.Read();
            Console.WriteLine(Test);
        }
    }
} 

После того, как я набрал число, в консоли всегда отображается «13».

Ответы [ 3 ]

2 голосов
/ 30 января 2020

Console.Read() читает первый символ из входного потока.

В вашем случае вы пытаетесь преобразовать второй символ входного потока (т.е. после первого Console.Read()), который равен Carriage return и его значение ASCII равно 13, переменная Test имеет тип int, сохраняя carriage return в целочисленном формате. т.е. 13

Если вы хотите преобразовать первый символ из входного потока, попробуйте ниже

using System;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            int Test = Console.Read();  //Or you can use Console.ReadLine() to read entire line.
            Console.WriteLine(Test);//Print first character of input stream
        }
    }
} 
1 голос
/ 30 января 2020

Здесь вы должны использовать Console.ReadLine, чтобы прочитать число. Поскольку Console.ReadLine возвращает строку, вы должны преобразовать ее в Int32. Следующий код решит проблему

using System;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
             int Test = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine(Test);
        }
    }
} 
0 голосов
/ 30 января 2020

Попробуйте изменить это значение на:

using System;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            int Test = Console.ReadLine();
            Console.WriteLine(Test);
        }
    }
} 

Поскольку 13 является ключевым кодом для ввода, вы, вероятно, получаете это число при попытке прочитать всю строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...