2016-12-22 4 views
0
//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]); 
} 

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

+5

Просьба уточнить, «что-то не так». *Что с этим не так? Что он делает? Что * должен * делать? – Rob

+0

Хе-хе, если бы я знал, что с ним не так, я бы не просил о помощи здесь: P, но я понимаю вашу точку зрения. Tnx за советом: P –

+1

Я не имею в виду, «что нужно исправлять», я имею в виду: «Каково ваше определение неправильного?». Вы сказали нам, что думаете, что это неправильно, но не * почему * вы так думаете. Если вы получите сообщение об ошибке, вы должны показать сообщение об ошибке и строку, которая произошла в – Rob

ответ

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]); 
} 
+0

Не говоря уже о том, что использование размера массива для индексации в нем также всегда приведет к тому, что «Index был за пределами массива», поскольку последний индекс всегда равен размеру 1 –

+0

Tnx, didn ' t знает список, я все еще новичок –

+0

Что означает var? Я вижу это в первый раз. –

0

Поскольку вы не знаете номер элементов во втором массиве, а 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]); 
} 
0

Являются ли массивы обязательными?

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); 
    } 
} 

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

Редактировать: просто прочтите нижнюю строку.

Смежные вопросы