class Check
{
public static void Main()
{
int[] arr1 = new int[] { 1, 2, 3 };
Console.WriteLine("The Number That Left Us Is");
Random rnd = new Random();
int r = rnd.Next(arr1.Length);
int Left = (arr1[r]);
Console.WriteLine(Left);
}
}
如果生成2,我想要删除2,剩下的i必须留下1应该是1和3。 谁能帮忙。它可以在数组中完成。
答案 0 :(得分:2)
无法重新调整数组的大小,你设置的数组永远都是那么大。
“最佳”选项是使用List<int>
代替int[]
class Check
{
public static void Main()
{
List<int> arr1 = List<int>int[] { 1, 2, 3 };
Console.WriteLine("The Number That Left Us Is");
Random rnd = new Random();
int r = rnd.Next(arr1.Length);
int Left = (arr1[r]);
arr1.RemoveAt(r);
Console.WriteLine(Left);
}
}
要实际创建一个小一个尺寸的新数组,将需要更多代码。
class Check
{
public static void Main()
{
int[] arr1 = int[] { 1, 2, 3 };
Console.WriteLine("The Number That Left Us Is");
Random rnd = new Random();
int r = rnd.Next(arr1.Length);
int Left = (arr1[r]);
int oldLength = arr1.Length;
arrTmp = arr1;
arr1 = new int[oldLength - 1];
Array.Copy(arrTmp, arr1, r);
Array.Copy(arrTmp, r+1, arr1, r, oldLength - r - 1);
Console.WriteLine(Left);
}
}
你提到“你必须坚持使用数组”,将列表转换为数组非常容易
class Check
{
public static void Main()
{
List<int> arr1 = List<int>int[] { 1, 2, 3 };
Console.WriteLine("The Number That Left Us Is");
Random rnd = new Random();
int r = rnd.Next(arr1.Length);
int Left = (arr1[r]);
arr1.RemoveAt(r);
Console.WriteLine(Left);
SomeFunctionThatTakesAnArrayAsAnArgument(arr1.ToArray());
}
}
答案 1 :(得分:1)
无法调整数组大小,如果要删除项目,请使用List<T>
。
但是,您可以创建一个新的。如果你想保留除随机索引之外的所有项目:
arr1 = arr1.Where((i, index) => index != r).ToArray();
使用列表,您可以使用RemoveAt
,这比创建数组更有效:
var list = new List<int> { 1, 2, 3 };
list.RemoveAt(r);
答案 2 :(得分:0)
无法在.NET中动态调整数组的大小,因此您无法从数组中“删除”某个项目(您可以将其设置为0,但我认为这不是您想要的)。
尝试使用List<int>
代替:
List<int> list = new List<int>() { 1, 2, 3 };
Console.WriteLine("The Number That Left Us Is");
Random rnd = new Random();
int r = rnd.Next(list.Count);
int Left = (list[r]);
list.Remove(Left);
Console.WriteLine(Left);
答案 3 :(得分:0)
尝试按照它从列表中删除项目并创建一个没有特定项目的新数组。
static void Main(string[] args)
{
int[] arr1 = new int[] { 1, 2, 3 };
Console.WriteLine("The Number That Left Us Is");
Random rnd = new Random();
int r = rnd.Next(arr1.Length);
// Create a new array except the item in the specific location
arr1 = arr1.Except(new int[]{arr1[r]}).ToArray();
int Left = (arr1[r]);
Console.WriteLine(Left);
}