我遇到了用户输入问题

时间:2017-08-22 20:44:06

标签: c#

所以,我是一个没有经验的新程序员,而且我正在学习一些名为SoloLearn的C#。它教我很好,但当我得到一个叫做用户输入的东西时,就出错了。问题是当我打开控制台应用程序时,没有任何显示。这是我的代码http://i.imgur.com/vyfF4N1.png。请记住,该程序的所有内容都正常工作,直到我添加了#age;#39;部分代码,然后当我在Visual Studio中打开它时,控制台上的所有内容都变为空白。请帮忙,谢谢!

3 个答案:

答案 0 :(得分:2)

这里的大多数答案都是正确的,它将解决眼前的问题,但这里的基本问题是,OP并不清楚地理解基本编程。哪个很好,他们已经说过他们是初学者,所以让我以一个不同的角度对此进行分析。

首先我会在这里发布代码。 @IcyJake,将来你应该在这里发布代码,而不是链接到代码图像。

static void Main(string[] args)
{
    string yourName;
    int yourAge = Convert.ToInt32(Console.ReadLine());

    Console.WriteLine("What's your name?");
    yourName = Console.ReadLine();

    Console.WriteLine("Hello, {0}\n", yourName);

    Console.WriteLine("How old are you?");

    Console.WriteLine("Oh, {1} is a cool number");

    Console.ReadLine();
}

该计划的目标显然是询问用户的姓名和年龄,并将该信息写回控制台。那么你应该怎么做才能实现这种行为?它将类似于以下内容。

  
      
  1. 要求用户输入年龄。
  2.   
  3. 将用户输入年龄转换为变量,并保留以供将来使用。
  4.   
  5. 要求用户输入姓名。
  6.   
  7. 将用户输入名称输入变量,并保留以供将来使用。
  8.   
  9. 使用两个保存的值输出消息。
  10.   

首先,请尝试了解方法Console.ReadLine()的用法。它的作用是,当用户在Console中输入内容并按下ENTER键时,它会抓取输入的内容并返回该值。所以如果你在你的程序中写这样的东西:

string input = Console.ReadLine();

这将采用用户键入的任何内容并将其保存到名为input字符串变量中。相反,Console.WriteLine()会在控制台上显示一些内容。

现在,让我们来看一下你的计划,看看它与我上面提到的事物顺序的不同之处。

首先,您从控制台获取输入并将其转换为整数( ALL 控制台输入为string格式,并将其用作您需要转换的数字它),并保存在yourAge变量中。这就是为什么你的程序看起来变成空白的原因。控制台只是等待您键入内容并点击ENTER。如果您只需输入号码并按Enter键,程序将进入下一阶段。然后,您要求输入名称,并将其保存到yourName变量中。然后你问年龄,但没有得到用户的意见。然后打印最后的消息。

所以你的程序中的顺序(就我上面提到的必须完成的东西而言)是这样的:

  

2

     

3

     

4

     

1

     

5

正如您所看到的,显然存在问题。要修复它,您需要做的是按照我提到的顺序重新排列代码。那是;

  1. 使用Console.WriteLine()并打印询问年龄的消息。
  2. 使用Console.ReadLine()获取该值并保存到yourAge变量中。
    • 在这里,您需要执行通常称为“错误处理”的操作。也就是说,您需要防止用户在询问年龄时输入非数字值。请参阅@Rafa提供的链接,在此处另外给出答案。
  3. 使用Console.WriteLine()并打印询问姓名的消息。
  4. 使用Console.ReadLine()获取该值并保存到yourName变量。
  5. 使用Console.WriteLine()打印输入值。
  6. 我故意不向你提供有效的代码,因为你是一个新学习的程序员,最好自己尝试一下,弄清楚你自己是做什么的。做。

    其他信息:

    Console.WriteLine()中花括号的用法是将可变内容打印到控制台。假设您的程序中有一个名为myVar1的整数变量,其值为5

    所以,如果你要写

    Console.WriteLine("Value = {0}", myVar1);

    它将替换 {0}并保持值myVar1。因此,您的输出将如下所示:

      

    值= 5

    现在如果你的程序中有两个变量,比如myVar1myVar2,你想要将两个写在同一行吗?比如说,您希望输出看起来像这样:(假设myVar1的值为5,myVar2的值为10.)

      

    值= 5和10

    我们现在做什么? 很容易,你用两个大括号写Console.WriteLine(),如下所示:

    Console.WriteLine("Values = {0} and {1}", myVar1, myVar2);

    这样做,将{0}替换为myVar1的内容,并将{1}替换为myVar2的内容。也就是说,逗号代替{0}后的第一个变量和逗号代替{1}后的第二个变量。所以你的输出看起来像上面的预期输出。

    您可以尝试并了解行为。例如,如果要交换这两个值,可以执行以下操作:

    Console.WriteLine("Values = {0} and {1}", myVar2, myVar1);

    现在,您的输出将如下所示:

      

    值= 10和5

    希望这可以帮助你开始。请找到更多教程并继续编程,擅长它。而且,使用断点进行调试是了解遇到问题的好方法。

    Finall,关于Stack Overflow。通常当您发布问题时,请直接复制粘贴代码,而不是上传图像。此外,这里的人通常不喜欢为你编写代码(有充分理由),但很乐意帮助你。所以试一试,只要问你是否能在SO中找到答案,或者通常在谷歌搜索后找到答案。 并阅读How to create a Minimal, Complete, and Verifiable example上的本指南,这将有助于您避免被投票。

    祝你好运!

答案 1 :(得分:0)

int yourAge = Convert.ToInt32(Console.ReadLine());

Console.WriteLine("How old are you?");

答案 2 :(得分:-1)

https://msdn.microsoft.com/en-us/library/f02979c7(v=vs.110).aspx

int inputNumber;
bool isNumber = Int32.TryParse(value, out inputNumber);
if(isNumber){ Console.WriteLine $"Your age is {inputNumber}"}
else { Console.WriteLine $"Fail Cast!!!"}