C# последовательность необработанное исключение

//1. add 10 numbers in sequence , print only steam numbers.

int[] seq= new int[10];
int n = 0;
int[] seq2= new int[n];

for (int i = 0; i < seq.Length; i++)
{
    Console.WriteLine("Add number ");
    seq[i] = int.Parse(Console.ReadLine());
    if (seq[i]%2==0)
    {
        seq2[n] = seq[i];
        n++;
    }
}
for (int i = 0; i < seq2.Length; i++)
{
    Console.WriteLine(seq2[i]);
}

Что-то не так с sequence2, и программа ничего об этом не говорит, может кто-нибудь помочь? дело не в задаче, я сделал это по-другому, но я просто хочу понять, что я здесь не так сделал.

3 ответа

Решение

Вы объявили Seq2 массив с длиной 0 в показанной ниже части вашего кода. Так что он всегда будет терпеть неудачу, когда Индекс был за пределами исключения массива, когда вы делаете это seq2[n] = seq[i];,

int n = 0;
int[] seq2= new int[n];

декларировать Seq2 вместо списка. Как это..

var seq2= new List<int>();

а затем сделать это..

seq2.Add(seq[i]);

Ваш окончательный код будет выглядеть так..

int[] seq= new int[10];
var seq2= new List<int>();

for (int i = 0; i < seq.Length; i++)
{
    Console.WriteLine("Add number ");
    seq[i] = int.Parse(Console.ReadLine());
    if (seq[i]%2==0)
    {
        seq2.Add(seq[i]);
    }
}
for (int i = 0; i < seq2.Count(); i++)
{
    Console.WriteLine(seq2[i]);
}

Обязательны ли массивы?

int n = 10;
for (int i = 0; i < n; i++)
{
    Console.WriteLine("Add number ");
    int a = int.Parse(Console.ReadLine());
    if (a%2==0)
    {
        Console.WriteLine(a);
    }
}

Если они есть, вам понадобится список, потому что вы не знаете, сколько из них будет четным.

Изменить: просто прочитайте нижнюю строку..

Поскольку вы не знаете количество элементов во втором массиве, а в C# нет динамических массивов (я думаю), просто используйте вместо этого список:

int[] seq= new int[10];
int n = 0;
List<int> seq2= new List<int>;

for (int i = 0; i < seq.Length; i++)
{
    Console.WriteLine("Add number ");
    seq[i] = int.Parse(Console.ReadLine());
    if (seq[i]%2==0)
    {
        seq2.Add(seq[i]);
        n++;
    }
}
for (int i = 0; i < seq2.Length - 1; i++)
{
    Console.WriteLine(seq2[i]);
}
Другие вопросы по тегам