繁体   English   中英

C#Console.read()没有显示正确的数字输入?

[英]C# Console.read() not displaying proper number input?

 String name = Console.ReadLine();
            System.Console.WriteLine("input name");
            System.Console.WriteLine("hello {0}", name);
            int hello = Console.Read();
            System.Console.WriteLine("First number input" + hello);
            int hello2 = Console.Read();
            Console.ReadKey();
            System.Console.WriteLine("Second number input" + hello2);

在此代码行中,它显示输入的名称,然后显示第二个键的第一个键的输入(即,您好),但是无论我做什么,它始终显示为13。如何解决此问题?

Console.Read不会解析输入字符。 它返回一个整数是一种误导,但这实际上是输入的单个字符的数字表示。

而是使用Console.ReadLine ,并将结果解析为数字。

int hello;
while(!int.TryParse(Console.ReadLine(), out hello)
{
   // This will happen if the user types something that's not a number
   Console.WriteLine("Please enter a valid number:"); 
}
Console.WriteLine("First number input" + hello);

您可以这样修改: //assumed you want to get integer values String name = Console.ReadLine(); System.Console.WriteLine("input name"); System.Console.WriteLine("hello {0}", name); int hello = Convert.ToInt16(Console.ReadLine()); System.Console.WriteLine("First number input" + hello); int hello2 = Convert.ToInt16(Console.ReadLine()); Console.ReadKey(); System.Console.WriteLine("Second number input" + hello2); //assumed you want to get integer values String name = Console.ReadLine(); System.Console.WriteLine("input name"); System.Console.WriteLine("hello {0}", name); int hello = Convert.ToInt16(Console.ReadLine()); System.Console.WriteLine("First number input" + hello); int hello2 = Convert.ToInt16(Console.ReadLine()); Console.ReadKey(); System.Console.WriteLine("Second number input" + hello2);

我发现您的代码存在一些基本问题,并在下面的注释中表达了我的想法。

String name = Console.ReadLine(); // Shows the cursor without a prompt to the user
System.Console.WriteLine("input name");
System.Console.WriteLine("hello {0}", name);
int hello = Console.Read(); // This line reads the new line character (13) from the above line
System.Console.WriteLine("First number input" + hello); // Displays 13 (new line character if the user doesn't enter any value)
int hello2 = Console.Read();
Console.ReadKey(); // Exits the console as soon as a user press a key
System.Console.WriteLine("Second number input" + hello2); // This is never displays to the user

在向您展示了所有问题之后,我想重新考虑它。 这是我想出的。 看一看。 由于您尝试使用用户输入构建简单的应用程序,因此您还必须考虑用户输入和输出的流程。

int firstNumber;
int secondNumber;
string name = string.Empty;

do
{
    Console.Clear();
    Console.Write("What is your name?");
    name = Console.ReadLine();        
} while (string.IsNullOrEmpty(name));

Console.WriteLine("Hello {0}", name);

do
{
    // This will happen if the user types something that's not a number
    Console.Clear();
    Console.WriteLine("Hello {0}", name);
    Console.Write("Please enter the first number:");
} 
while (!int.TryParse(Console.ReadLine(), out firstNumber));

do
{
    // This will happen if the user types something that's not a number
    Console.Clear();
    Console.WriteLine("Hello {0}", name);
    Console.WriteLine("First number is: " + firstNumber);
    Console.Write("Please enter the second number:");
}
while (!int.TryParse(Console.ReadLine(), out secondNumber));

Console.WriteLine("Second number is: " + secondNumber);
Console.Read();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM