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

本文关键字:一行 int 控制台 确认 | 更新日期: 2023-09-27 18:23:51

我今天真的开始了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;

我认为最困难的部分是当我陷入困境时,尝试搜索正确的短语寻求帮助。

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

注意这个要求,Return键是非常的标准输入方式。ReadLine函数将一直读取,直到遇到此字符为止。

你有两个选择:

  1. 循环读取密钥

您可以通过在某种while循环中调用ReadKey而不是ReadLine来实现这一点。这里的大问题是,您需要一些分隔符来确定输入的结束,无论它是什么,用户都不会期望它。

  1. 与控制台光标发生冲突

这不是一个可怕的想法,但也不是一个作为新手尝试学习的好做法。您可以使用Console.SetCursorPosition(MSDN)执行此操作

老实说,我会保持原样,也许可以更改您的输入格式,使其在多行中有意义。无论如何,这将是您的用户所期望的。

看看控制台。Clear只能用来清除一行而不是整个控制台吗?

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

编辑:我刚刚意识到这个问题比我预期的要简单得多,但我会把这个答案留在这里,以防它有用。

用一个例子扩展Bradleys的答案:

如您所见,左边的光标设置为"What is"的长度加上您的答案。此外,顶部会高出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;