C#序列未处理的异常

时间:2016-12-22 22:45:10

标签: c# sequence

//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 个答案:

答案 0 :(得分:3)

您在代码的下方显示部分声明了长度为Seq2的{​​{1}}数组。因此,当您执行此操作0时,索引超出数组异常范围时,它将始终失败。

seq2[n] = seq[i];

int n = 0; int[] seq2= new int[n]; 声明为列表。像这样......

Seq2

然后这样做..

var seq2= new List<int>();

您的最终代码将如下所示 ..

seq2.Add(seq[i]);

答案 1 :(得分: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]);
}

答案 2 :(得分: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);
    }
}

如果是,你需要一个List,因为你不知道它们中有多少是偶数。

编辑:只需阅读底线..