java - 为什么我会收到此 IndexOutOfBoundsException 错误?pt2
问题描述
所以我目前正试图找到这些行和列的平均值,并且我已经得到了所有这些行和列的总和。但是由于此代码而出现此错误
int e[][] = {{10,30, 50, 200},
{60, 40,70, 55},
{80, 5, 35, 100}};
int sumRow = 0;
int sumCol = 0;
for (int r = 0; r < e.length; r++)
{
for (int c = 0; c < e[r].length;c++)
{
sumRow = sumRow + e[r][c];
}
System.out.println(sumRow);
}
for (int r = 0; r < e[r].length; r++)
{
for (int c = 0; c < e.length;c++)
{
sumCol = sumCol + e[c][r];
}
System.out.println(sumCol);
}
}
问题出在第二个嵌套 for 循环的开头,我对此很陌生,所以如果很明显,请不要感到惊讶。
for (int r = 0; r < e[r].length; r++)
这就是问题所在。
感谢您的帮助。
解决方案
如果你的数组不是锯齿状的,你可以只使用 e[0].length。在您的代码中,当 r 为 3 并且您的数组没有 1 时,e[r].length 将检查第四行的长度,因此您可以使用 e[0].length 预先确定它。
int e[][] = {{10, 30, 50, 200},
{60, 40, 70, 55},
{80, 5, 35, 100}};
int sumRow = 0;
int sumCol = 0;
for (int r = 0; r < e.length; r++) {
for (int c = 0; c < e[r].length; c++) {
sumRow = sumRow + e[r][c];
}
System.out.println(sumRow);
}
for (int r = 0; r < e[0].length; r++) {
for (int c = 0; c < e.length; c++) {
sumCol = sumCol + e[c][r];
}
System.out.println(sumCol);
}
推荐阅读
- mysql - 无法从另一个容器访问 Docker 容器中的 MySQL 数据库
- linux - mv 来自文本板的具有空格和特殊字符的文件
- android - 当我单击它时,项目设置中的 android sdk 许可证对话框不接受
- vb.net - 将列表框乘以组合框
- c# - CryptographicException:加密操作期间发生错误
- python - 使用python解析多个xml文件
- python - 创建新元组与索引并分配给数组
- html - Html 常量字符大小
- web-scraping - 使用 BeautifulSoup 获取产品 ID、品牌名称和图像时出现我的代码中的问题
- c# - 将 JSON API 结果转换为类