从int []数组中删除整数

时间:2018-02-09 14:36:05

标签: c# arrays

我想帮助这项计划发挥作用。用户必须首先输入int []数组的上限和下限。接下来,他们输入要从所述数组和显示中排除的数字。我无法理解如何删除这些数字。任何帮助将不胜感激。谢谢

代码:

        Console.WriteLine("Please enter the first integer for the lower bound now");
        int lower = int.Parse(Console.ReadLine()); //Uses user input for lower array bound
        Console.WriteLine("Now enter the second integer for the upper bound");
        int upper = int.Parse(Console.ReadLine()); //Uses user input for upper array bound
        Console.WriteLine("Finally, enter the integers you do not want to see in the range");
        int[] exNums = new int[] {int.Parse(Console.ReadLine()) }; //User enters number to exclude from range 

        int[] numbers = Enumerable.Range(lower, upper).ToArray();
        Random r = new Random();
        int range = 0;

        try
        {

            for (int i = 0; i < 50; i++)
            {

                    range = r.Next(lower, upper);
                    Console.Write(range + ",");

            }

        }
        catch (ArgumentOutOfRangeException e)
        {
            Console.WriteLine("Upper bound cannot be lower than lower bound");
        }

2 个答案:

答案 0 :(得分:0)

try
{
   ...
}
catch (ArgumentOutOfRangeException e)
{
    Console.WriteLine("Upper bound cannot be lower than lower bound");
}

好的。请不要写这样的代码。而不是搜索异常,请自行检查值。

if (upper < lower)
{
    Console.WriteLine("Upper bound cannot be lower than lower bound");
    return;
}

让我们正确生成IEnumerable<int>个数字。 Enumerable.Range采用起始编号和条目计数,而不是上限。

IEnumerable<int> allNumbers = Enumerable.Range(lower, (upper - lower) + 1);

假设我们有一组要排除的数字:

int[] numbersToExclude = ...;

我们可以简单地使用LINQ的.Except()方法来取出我们不想要的东西。

IEnumerable<int> filteredNumbers = allNumbers.Except(numbersToExclude);
如您所愿,

.ToArray().ToList()foreach filteredNumbers的结果。

如果问题标题“从int []数组中删除整数”存在误解,则无法从c#数组中删除条目。一旦设置了数组的大小(数组可以容纳的项目数),就无法更改它。

添加和删除数组中项目的唯一方法是创建一个全新的数组并复制要保留的元素。

然而,可以添加和删除条目的不同数据结构,而不是所有这些数据管理,最受欢迎的是List<>

答案 1 :(得分:-3)

也许有一些原因你需要使用数组而不是列表,但为什么不能使用......(Java示例)

int[] answers = new int[upper];
int index=0;
for (int lower; lower<=upper; lower++){
  // if current value is within excluded numbers array, skip
  if (Arrays.binarySearch(excludes, lower) >= 0){
    continue;
  }
  else{
   //add to the answers array
   answers[index] = lower;
   index++;
  }
}