确认int后,C#控制台保持在同一行

时间:2014-09-19 22:39:09

标签: c#

我今天已经开始使用c#了,我已经遇到了障碍。

我正在关注YouTube上的初学者指南,但我还没有找到答案。

我想要得到的是下面的问题,所有这些都在同一条线上:

"什么是*除以*"


但我得到的是:

什么是*(此时我按Return键确认我认为是我的问题的数字)

除以*(这里真的是我想要回击的唯一地方)

Start:
  int num03;
  int num04;
  int answer;

  Console.Write ("what is "); 
  num03 = Convert.ToInt32 (Console.ReadLine ()); 
  Console.Write ("divided by "); 
  num04 = Convert.ToInt32 (Console.ReadLine ());

  Console.WriteLine ("");
  Console.WriteLine ("is the answer? ");
  answer = Convert.ToInt32 (Console.ReadLine());

  if (num03 / num04 < answer) {
    Console.WriteLine ("a bit lower next time");
    Console.WriteLine ("");
    Console.WriteLine ("");
    goto Start;
  } else if ( num03 / num04 > answer ) {
    Console.WriteLine ("a bit higher next time");
    Console.WriteLine ("");
    Console.WriteLine ("");
    goto Start;
  } else if ( num03 / num04 == answer ) ; {
    Console.WriteLine ("correct!!! please try another");
    Console.WriteLine ("");
    Console.WriteLine ("");
  }

  goto Start;

我认为最困难的部分是在我遇到困难时尝试搜索正确的短语以寻求帮助。

3 个答案:

答案 0 :(得分:1)

小心这个要求, Return 键是输入输入的非常标准方式。 ReadLine函数读取,直到遇到此字符。

您有两种选择:

  1. 循环阅读密钥
  2. 您可以通过在某种while循环中调用ReadKey而不是ReadLine来执行此操作。这里的一个大问题是你需要一些分隔符来确定输入的结束,无论它是什么,用户都不会期望它。

    1. 与控制台光标混乱
    2. 不是一个可怕的想法,但也不是一个尝试学习新手的好习惯。您可以使用Console.SetCursorPositionMSDN

      执行此操作

      老实说,我会保持原样,可能会更改您的输入格式,因此它在多行上都有意义。无论如何,这将是您的用户所期望的。

答案 1 :(得分:0)

查看Can Console.Clear be used to only clear a line instead of whole console?

您可以清除控制台的最后一行并使用新信息再次打印,也可以通过移动光标创建可用选项。

编辑:我刚刚意识到这个问题比我想象的要简单得多,但我会在这里留下这个答案,以防它无论如何都有用。

答案 2 :(得分:0)

扩展Bradleys回答一个例子:

如您所见,左侧光标设置的长度为“什么是”加上您的答案。 顶部也高1,这可以补偿你的输入。我不推荐使用ReadKey,因为你有很多场景需要赶上退格等等。

Start:
        int num03;
        int num04;
        int answer;

        Console.Write("what is ");

        string input = Console.ReadLine();
        num03 = Convert.ToInt32(input);
        Console.CursorLeft = "what is ".Length + input.Length;
        Console.CursorTop--;
        Console.Write(" divided by ");
        num04 = Convert.ToInt32(Console.ReadLine());

        Console.WriteLine("");
        Console.WriteLine("is the answer? ");
        answer = Convert.ToInt32(Console.ReadLine());

        if (num03 / num04 < answer)
        {
            Console.WriteLine("a bit lower next time");
            Console.WriteLine("");
            Console.WriteLine("");
            goto Start;
        }
        else if (num03 / num04 > answer)
        {
            Console.WriteLine("a bit higher next time");
            Console.WriteLine("");
            Console.WriteLine("");
            goto Start;
        }
        else if (num03 / num04 == answer) ;
        {
            Console.WriteLine("correct!!! please try another");

            Console.WriteLine("");
            Console.WriteLine("");
        }

        goto Start;