作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试完成一项作业,该作业要求我在 Java 中创建一个方法,当给定所需的高度和宽度时,该方法会创建一个行主矩阵或列主矩阵。
这是我到目前为止所拥有的:
public static int[][] increasingMatrix(int width, int height, boolean format){
if (format) { // generate row-major matrix
int[][] array = new int[height][];
int count = 0;
for (int i = 0; i < height; i++) {
array[i] = new int[width];
for (int j = 0; j < width; j++) {
array[i][j] = count;
count++;
}
}
return array;
} else {
int[][] array = new int[width][];
int count = 0;
for (int i = 0; i < width; i++) {
array[i] = new int [height];
for (int j = 0; j < height; j++) {
array[j][i] = count;
count ++;
}
}
return array;
}
}
但是,当我尝试对生成的数组运行测试时,列主矩阵(据我所知)生成不正确。行主矩阵似乎生成正确。
你能看出我做错了什么吗?我已经盯着这个看了几个小时,但似乎无法取得任何突破。
谢谢!
最佳答案
你的代码是错误的。矩阵中的第一个索引始终是宽度。
记住:矩阵是数组的数组。第一个索引是矩阵的宽度,第二个索引是高度。
试试这个:
if(format) {
return buildRowMajorMatrix(width, height);
} else {
return buildColumnMajorMatrix(width, height);
}
其中 buildRowMajorMatrix
看起来像:
private int[][] buildRowMajorMatrix(int width, int height) {
int[][] matrix = new int[width][height];
int cellValue = 0;
for(int columnIndex = 0 ; columnIndex < width ; columnIndex++) {
for(int rowIndex = 0 ; rowIndex < height ; rowIndex++, cellValue++) {
matrix[columnIndex][rowIndex] = cellValue;
}
}
return matrix;
}
和 buildColumnMajorMatrix
看起来像:
private int[][] buildColumnMajorMatrix(int width, int height) {
int[][] matrix = new int[width][height];
int cellValue = 0;
for(int rowIndex = 0 ; rowIndex < height ; rowIndex++) {
for(int columnIndex = 0 ; columnIndex < width ; columnIndex++, cellValue++) {
matrix[columnIndex][rowIndex] = cellValue;
}
}
return matrix;
}
关于java - 如何在java中生成行优先和列优先矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29736015/
我是一名优秀的程序员,十分优秀!