c# - '指数数组的边界之外。'
问题描述
我有一个 3X3 数组byte[,] grid = new byte[3,3];
,可以在我的程序中正常访问它,但是当我尝试通过循环查找横向行的总数时,我得到一个错误“索引超出了数组的范围。”。我知道这意味着什么,但我不明白为什么我会得到它。
total = 0;
for (byte xy = 2; xy >= 0; xy-=1) {
total += grid[xy, xy]; //this is were i get the error
}
解决方案
遍历循环:
第一个:xy = 2
第二:xy = 1
第三:xy = 0
第四:xy = 255
0 - 1 = 255,因为您的循环变量 xy 是一个字节,它不能表示负值,只能表示 0 到 255。
要修复您的循环,您可以将 xy 更改为int
. 这样它可以表示一个负值,允许条件 xy >= 0 返回 false 并退出循环。
for (int xy = 2; xy >= 0; xy-=1) {
total += grid[xy, xy];
}
推荐阅读
- neutrinos-platform - 如何使用 Neutrinos 平台创建一个简单的登录页面/
- r - 我想根据产品列在 R 中编写串联代码
- node.js - 在 npm (laravel) 中编译 webpack 时出错
- android - 如何更改 xamarin.android 中默认显示警报的背景颜色?
- java - 无法在测试注释方法中传递驱动程序值
- python-3.x - 如何在 matplotlib ax.imshow() 中使用“extent”而不更改覆盖的 ax.text() 句柄的位置?
- python - 更改重复值索引
- actionscript-3 - 这是我的 AS3 AIR 桌面应用程序中的内存泄漏,还是我不应该担心?
- neo4j - Neo4j:启动 Neo4j 太慢并且失败
- python - 有没有办法逐步计算列的数据框的平均值?