循环前声明的变量在c#循环中不存在

时间:2014-11-20 16:49:13

标签: c# variables scope

我正在使用c#,我有一个流动的问题: 我减速高度变量之前的循环蚂蚁它说在循环中不存在。

在这部分代码中,我希望程序存储"数据"的所有第3个元素。数组除了第一个,所以如果"数据"数组看起来像这样:1,2,3,4,5,6,7,8,9,10,11,12 ...我想得到:6,9,12 ...

static int[] tall()
{
    int[] data = database();//recalling an array filled with numbers
    int j = 0;
    int[] height;
    for (int i = 6; i < data.Length; )
    {
        i = i + 3;
        j++;
        height[j] = data[i];//Use of unassigned local variable 'height'
    }
    return height;
}

1 个答案:

答案 0 :(得分:2)

编译器会告诉您问题所在。不幸的是,它没有告诉你如何解决它。

您需要将height分配给int数组,但首先需要确定其长度。您可以通过从长度中减去初始数据点的索引(即6)来计算长度,将结果除以3,然后加1.这可以简化为(length-3)/3

int[] height = new int[(data.Length-3)/3];

这假设data.Length至少为4,否则计数将为负数。

您还应该将索引的调整移动到分配后的某个点,或者更好的是,转到循环的标题:

// Start i at 5, because array indexes are zero-based.
for (int i = 5; i < data.Length; i+=3, j++) {
    height[j] = data[i];
}

Demo.

相关问题