【问题标题】:variable declared before cycle do not exist in cycle in c#在循环之前声明的变量在c#的循环中不存在
【发布时间】:2014-11-20 16:49:13
【问题描述】:

我正在使用 c#,但遇到了流动问题: 我之前为循环蚂蚁减速了高度变量,它说循环中不存在。

在这部分代码中,我希望程序存储除第一个之外的“data”数组的所有第三个元素,因此如果“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;
}

【问题讨论】:

  • 我不确定 cycle 但你必须像 int[] height = new int[data.Length];int[] height = new int[data.Length - 6]; 一样初始化你的数组

标签: c# variables scope


【解决方案1】:

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

您需要将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.

【讨论】:

    猜你喜欢
    • 2010-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-02
    • 2020-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多