2014-12-19 69 views
2
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); 

在这行代码中,它显示输入的名称,然后显示第二个键的第一个键(即hello)的输入,但无论我做什么,它总是显示为13.我该如何解决这个问题?C#Console.read()不显示正确的数字输入?

+0

iirc,13是“Enter”键的关键代码。据我所知,'Console.Read()'只读取一个字符,不包括“Enter”。任何人都在意解释他为什么在'hello2'中得到13分? – cbreezier 2014-12-19 00:43:11

+0

@Crazysheep它也接受Enter。 – 2014-12-19 00:57:28

+0

它看到m * s接受两个数字我注意到,如果我把kj它读取k和j作为单独的,并给我的数字,但如果我尝试单独输入将适用于13,我知道为什么。我不得不在输入后按回车,所以它分配第二个整数作为输入是13. Idk如何解决这个问题:/例如在我的代码: int x = Console.Read(); Console.WriteLine(x); int y = Console.Read(); Console.WriteLine(y); 我把MK我收到109和107两个相应的数字。这是伟大的,但所有,但我想知道如何让他们分别输入 – 2014-12-19 02:33:33

回答

6

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); 
0

您可以修改这样的: //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);

+0

你应该使用'Convert.ToInt32',因为你正在分配一个'int'。但是,请注意,如果最终用户输入的内容不是int,则会引发异常。 – 2014-12-19 00:47:48

+0

感谢您的纠正,但int32和int16之间的差异只是他们的大小,我错了吗?它也是一个依赖拱形的术语。提供int16的原因,资源效率。 – 2014-12-19 00:55:10

+0

我是这个遗憾的小白菜; - ;你可以请里德分解你写给我的代码!就像我们将console.readline转换为int的目的一样?非常感谢您的帮助和快速回复! – 2014-12-19 01:59:29

0

我发现你的代码的一些基本问题,并把我的想法在下面的评论。

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(); 
+0

我使用了@reedcopsey的建议来检查数字 – Sam 2014-12-19 02:10:26