如何从and数组中删除0?

时间:2018-12-07 15:19:51

标签: c#

作业要求我从用户输入中找到倒数第二个数字(最多10个),如果输入0,程序应停止并找到倒数第二个数字,而不进行计数。但是我必须事先声明数组的大小。 例如,如果我键入4 7 3 8 0,程序还会对所有0进行计数,直到有10个数字为止,这样它就会看到:4 7 3 8 0 0 0 0 00。有没有办法让我停止程序从看到其他0还是以某种方式更改数组大小?

编辑: 好的,这是我到目前为止的代码:

        int s;
        s = 10;
        int[] numbers = new int[s];

        for (int i = 0; i < numbers.Length; i++)
        {
            int.TryParse(Console.ReadLine(), out numbers[i]);

        }

        int firstLowestNumber = numbers[0];
        int secondLowestNumber = numbers[0];
        for (int i = 0; i < numbers.Length; i++)
        {
            if (numbers[i] < firstLowestNumber)
            {
                firstLowestNumber = numbers[i];
            }
        }

        for (int x = 0; x < numbers.Length; x++)
        {
            if (numbers[x] < secondLowestNumber && firstLowestNumber != numbers[x])
            {
                secondLowestNumber = numbers[x];
            }
        }

        Console.WriteLine("Second Lowest Number is {0}", secondLowestNumber);



        Console.ReadLine();

2 个答案:

答案 0 :(得分:2)

使用int数组初始化时,所有数字都将为0。这意味着您仅需在输入为0时停止读取。

因此,在第一个foreach中进行一些更改即可:

int input;
int.TryParse(Console.ReadLine(), out input);
if (input == 0) break; //This will jump out of the foreach
number[i] = input;

答案 1 :(得分:0)

这取决于您的作业目标。

1)使用Linq(可能的老师特别要求您不使用Linq来完成此任务)

using System.Linq;
/*...*/
List<int> ints = new List<int>();
ints.Add(/*...*/);
/*...*/
ints = ints.Where(x => x != 0).ToList();
/*...*/

2)作为@Aldert的答案。

3)更改数组的打印机制

int[] ints = new int[10];

foreach (int element in ints) {
  if (element == 0)
    continue;
  Console.Write("{0} ", element);
}