Ваша проблема в том, что вы пытаетесь сохранить индекс i
, который указывает вашу текущую позицию в массиве. Одним из решений будет просто уронить его и добавить элемент в коллекцию, пока у вас не будет 10 элементов.
Здесь я взял HashSet<int>
, потому что у нас не может быть дубликата в HashSet . Каждый раз, когда вы пытаетесь добавить один, он просто уронит его. Но если вы хотите разрешить дублирование, вы можете использовать простой List<int>
.
int collectionSize = 10;
int lowerBound = 1, upperBound = 25;
var userSelectedNumbers = new HashSet<int>();
while (userSelectedNumbers.Count() < collectionSize)
{
Console.WriteLine($"Enter an int between {lowerBound} and {upperBound} : ");
var input = Console.ReadLine();
if (int.TryParse(input, out int value)
&& lowerBound <= value
&& value < upperBound
)
{
userSelectedNumbers.Add(value);
}
else {
Console.WriteLine("Not a valid input!");
}
}
Console.Clear();
Console.WriteLine(
$"userSelectedNumbers contains {userSelectedNumbers.Count()} elements : {"
+ string.Join(", ", userSelectedNumbers) + "}"
);
. Затем вы можете проверить, находится ли случайный номер в пределах диапазона, используя Contains
:
var random = new Random();
int computerPick = random.Next(0, 25);
Console.WriteLine("Computer picked : " + computerPick);
if (userSelectedNumbers.Contains(computerPick))
{
Console.WriteLine("You win!");
}
else {
Console.WriteLine("You loose!");
}
Не забудьте использовать:
using System.Collections.Generic;
using System.Linq;
nb: диапазон определяется с помощью 1 ≤ x < 25
, с использованием соглашения W. Dijkstra http://www.cs.utexas.edu/users/EWD/ewd08xx/EWD831.PDF