【发布时间】:2021-06-04 10:55:52
【问题描述】:
所以我有一个项目,我需要存储 8 个整数,介于 1-10 之间,并将它们召回到直方图中 直方图仅由字符 * 组成。 (原谅格式不好,这是我的第一篇文章) 该程序有效,但我认为我的 int 限制 (1-10) 的 if 语句可以简化。 我的目标是用尽可能少的代码实现这个输出
整个代码,只有代码(和 cmets)
Console.WriteLine("Hello and Welcome!\nEnter 8 values between 1 and 10\n*Press Any Key to continue*");
Console.ReadKey();
//create list to store values
List<int> values = new List<int>();
//loop to collect values
for (int i = 1; i < 9; i++)
{
//label for data validation start point
retry:
Console.WriteLine("Please Enter Value " + i, "Between 1 - 10");
//variable assigned to user input
value = Console.ReadLine();
//Convert string to integer
if (!int.TryParse(value, out validValue))
{
Console.WriteLine("~Incorrect Data Input~"); goto retry; };
if (validValue < 1) { Console.WriteLine("~Incorrect Data Input~"); goto retry; };
if (validValue > 10) { Console.WriteLine("~Incorrect Data Input~"); goto retry; };
values.Add(validValue);
}
for (int i = 0; i < 8; i++ )
{
Console.WriteLine();
for(int id = 0; id < values[i]; id++)
Console.Write("*");
}
Console.ReadKey();
这是我认为可以更清洁的区域
if (validValue < 1) { Console.WriteLine("~Incorrect Data Input~"); goto retry; };
if (validValue > 10) { Console.WriteLine("~Incorrect Data Input~"); goto retry; };
我愿意接受有关如何清理这个或项目的任何部分的任何建议。
这个项目有一个更困难的方面,比如如果你想炫耀某种东西,我需要垂直显示直方图。 我想这可以用二维数组来完成吗?除了在正确的空格中需要 80 个空格和 * 之外,我真的没有任何线索。哈哈。
我只写了一个月左右的代码,它是基于学习者的,欢迎任何帮助或建议
谢谢
克里斯
【问题讨论】:
-
到目前为止,你做得很好。继续以您可以弄清楚如何回答的方式提出问题。一些建议... 如果可能的话,永远不要使用
goto。尝试定义变量int validValue = 0;,然后使用while循环继续循环,直到用户定义它while (validValue == 0) { //ask user to define it }。 -
为什么?没有转到??谢谢你的客气话
标签: c# list validation variable-assignment restrict