确认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;
我认为最困难的部分是当我陷入困境时,尝试搜索正确的短语寻求帮助。
注意这个要求,Return键是非常的标准输入方式。ReadLine
函数将一直读取,直到遇到此字符为止。
你有两个选择:
- 循环读取密钥
您可以通过在某种while循环中调用ReadKey
而不是ReadLine
来实现这一点。这里的大问题是,您需要一些分隔符来确定输入的结束,无论它是什么,用户都不会期望它。
- 与控制台光标发生冲突
这不是一个可怕的想法,但也不是一个作为新手尝试学习的好做法。您可以使用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;