2014-11-20 88 views
1

我正在使用c#并且遇到流动问题: 我在循环ant之前减速了高度变量,它说周期中不存在。在循环中声明的变量不存在于循环中c#

在这部分代码中,我希望程序存储“data”数组除第一个元素之外的所有第3个元素,所以如果“data”数组看起来像这样: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; 
} 
+0

我不知道*周期*但是你必须像'int [] height = new int [data.Length];'或'int [] height = new int [data.Length - 6];初始化你的数组; – Habib 2014-11-20 16:50:34

回答

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.