2016-12-22 81 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]); 
} 

sequence2出现问题,程序没有提供任何有关它的信息,有人可以帮忙吗?这不是关于我以其他方式做的任务,但我只是想了解我在这里做错了什么。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

更不用说,使用数组的大小来索引它也总是会导致“索引超出了数组的边界”,因为最后一个索引总是大小为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); 
    } 
} 

如果他们是,你将需要一个列表,因为你不知道他们会有多少将是偶数。

编辑:刚读底线..