用户输入数字,程序应通过写“-” *数字中的数字量来制作侧面图,但会在用户输入下写“-”一行
电流输出:
预期输出:
static void Main(string[] args)
{
int num1, num2;
Console.WriteLine("how many numbers will you want to enter?");
num1 = int.Parse(Console.ReadLine());
Console.WriteLine("Enter " + num1 + " numbers");
for(; num1 > 0; num1--)
{
num2 = int.Parse(Console.ReadLine());
Hi(num2);
}
}
static void Hi(int num)
{
while(num != 0)
{
num /= 10;
Console.Write("-");
}
Console.WriteLine()
}
答案 0 :(得分:3)
您可以在控制台中获取并设置光标位置,因此,如果您记得在用户按Enter键输入数字之前光标所在的行,则可以将光标重新放置在该行上。
另外,要打印输入长度的短划线,输入的数字也不必是数字(否则您已经检查过了)。
类似这样的东西应该合适:
static void Main(string[] args)
{
Console.Write("How many numbers will you want to enter? ");
int num1 = int.Parse(Console.ReadLine());
Console.WriteLine("Enter " + num1 + " numbers");
for (; num1 > 0; num1--)
{
int currentLine = Console.CursorTop;
string num2 = Console.ReadLine();
Console.SetCursorPosition(20, currentLine);
Console.WriteLine(new string('-', num2.Length));
}
Console.WriteLine("\r\n(Press enter to leave program.)");
Console.ReadLine();
}
示例输出:
How many numbers will you want to enter? 4
Enter 4 numbers
1 -
435 ---
What happens long wi-----------------------
(Press enter to leave program.)
答案 1 :(得分:1)
使用如下方法:
public string getKeyBuffer()
{
string buffer = "";
do
{
var charIn = Console.ReadKey(true);
if (charIn.Key == ConsoleKey.Enter) break;
buffer += charIn.KeyChar;
Console.Write(charIn.KeyChar);
} while (true);
return buffer;
}
这将回显每个按下的键,然后在用户按下enter
键时返回所有按下的键,而不会回显enter
键。
答案 2 :(得分:0)
最好的解决方案是写除控制台之外的其他内容,您可以在其中完全控制显示的内容和位置。
另一种解决方案是格式化代码中的字符串,然后清除控制台并每次编写整个内容。
另一种解决方案是跟踪您的位置并使用Console.SetCursorPosition
移动控制台光标。但是,鉴于存在更好的输出替代方案,这很少是令人满意的解决方案。
您可以使用Console.CursorTop--;
将光标向上移动一行,而不必跟踪您所在的行。