【发布时间】:2018-10-22 11:01:10
【问题描述】:
编写一个程序并要求用户输入 5 个数字。如果一个号码有 之前已输入,显示错误消息并要求用户 重试。用户成功输入 5 个唯一数字后,对它们进行排序 并在控制台上显示结果。
有人可以帮我解决这个问题吗?我真的很困惑如何解决这个问题。这是我的代码。
var number = new int[5];
Console.WriteLine("Enter 5 unique numbers");
for (int i = 0; i < 5; i++)
{
number[i] = Convert.ToInt32(Console.ReadLine());
var numberValue = number[i];
var currentNumber = Array.IndexOf(number, numberValue);
if (number[i] == number[0])
{
continue;
}
else
{
if (!(currentNumber == number[i]))
{
continue;
}
else
{
Console.WriteLine("Hold on, you already entered that number. Try again.");
}
}
/* foreach (var n in number) { ... } */
continue;
}
Array.Sort(number);
Console.WriteLine();
foreach (var n in number)
Console.WriteLine(n);
Console.WriteLine();
我在检查是否已经输入了相同的数字时找不到解决方案。请帮帮我。并请解释为什么它是答案。
PS:你能不能只用简单的代码,不要用HashSet之类的关键字?我知道这会解决问题,但我还不知道。我只是想一步一步地学习 C#,所以对此我很抱歉。谢谢!
【问题讨论】:
-
不要使用 for (5) 循环,而是使用 while (list_of_input.Count 的数组并使用它的 Contains 方法。
-
顺便说一句:尽量避免嵌套 if 和太多
continue语句 -
好的,谢谢您的提示。但这将如何帮助我找出问题的答案?
-
如果元素不在数组中,您应该检查
if (currentNumber == -1)。 indexOf 方法将返回 -1 不存在于数组中并且有效索引为 0 - n 如果有效。