在循环之前声明的变量在 C# 中的循环中不存在
本文关键字:循环 不存在 声明 变量 | 更新日期: 2023-09-27 18:31:10
我正在使用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;
}
编译器会告诉您问题所在。不幸的是,它没有告诉您如何解决它。
你需要将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];
}
演示。