int numbers;
List<int> arrayInt = new List<int>();
for (int i = 0; i <= 10; i++)
{
Console.Write("Enter 10 integers: ");
numbers = Int32.Parse(Console.ReadLine());
arrayInt.Add(i);
if (i == 10)
{
int[] output = arrayInt.ToArray();
int min = output.Min();
Console.WriteLine(min); //outputs 0
}
}
用户输入10个整数并将其添加到arrayInt
列表中。
用户输入10个整数后,通过将if
列表转换为数组,第二个arrayInt
获得最低整数。我使用.Min()
来获得最低的int,但它仍然输出0
。
我的代码有什么问题?
例如,I enter 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
,Console.WriteLine(min)
应输出1
,因为它是最低的整数。
答案 0 :(得分:4)
arrayInt.Add(i);
您正在将i添加到列表中,而不是您要输入的内容。上面的代码实际上并没有使用变量numbers
答案 1 :(得分:2)
我建议做一些改变:
Int.TryParse
代替Parse
,因为如果用户提供无效输入,它将返回false
,在这种情况下我们可以告诉他们再试一次。List
转换为Array
。列表的扩展方法可以为您提供最小值。您只需在文件顶部使用using System.Linq
即可使用它。以下是代码:
static void Main()
{
var allNumbers = new List<int>();
for (int i = 0; i < 10; i++)
{
Console.Write($"Enter integer #{i + 1}: ");
int input;
while (!int.TryParse(Console.ReadLine(), out input))
{
Console.Write(" - Invalid input, try again: ");
}
allNumbers.Add(input);
}
Console.WriteLine($"\nThank you! The smallest number you entered is: {allNumbers.Min()}");
Console.Write("\nDone!\nPress any key to exit...");
Console.ReadKey();
}
<强>输出强>
答案 2 :(得分:1)
这是因为您正在添加输入数字的当前索引(位置)而不是实际值。改变这个:
arrayInt.Add(i);
对此:
arrayInt.Add(numbers);
答案 3 :(得分:0)
您正在使用0到10之间的List.Add()
。因此,您只得到最小值为0的结果。在您的情况下,您可以将其更改为List.Add(number)
。
答案 4 :(得分:-1)
这个黑客应该给你最小值:
List<int> list = new List<int> { 5, 7, 3 };
list.Sort();
int minVal = list.First();
结果:minVal = 3