Java中的2dint数组反转
我遇到的问题是,我必须创建一个程序,该程序使用一个对象反转二维数组中每行的元素,并打印出结果矩阵。我的代码只打印出每行的前3个数字。这是我的代码:Java中的2dint数组反转,java,arrays,multidimensional-array,Java,Arrays,Multidimensional Array,我遇到的问题是,我必须创建一个程序,该程序使用一个对象反转二维数组中每行的元素,并打印出结果矩阵。我的代码只打印出每行的前3个数字。这是我的代码: class Reverse { void matrixReverse(int[][] data) { int row_val = data.length; int col_val = data[0].length; int[][] data_reverse = new int[row_val
class Reverse {
void matrixReverse(int[][] data) {
int row_val = data.length;
int col_val = data[0].length;
int[][] data_reverse = new int[row_val][col_val];
for(int row = row_val - 1; row >= 0; row--){
for(int col = col_val - 1; col >= 0; col--){
data_reverse[row_val - 1 - row][col_val - 1 - col] = data[row][col];
}
}
for(int row = 0; row < row_val; row++){
for(int col = 0; col < col_val; col++){
System.out.println(data_reverse[row][col]);
}
System.out.println();
}
}
}
public class ArrayReverse {
public static void main(String[] args) {
int[][] data = {
{3, 2, 5},
{1, 4, 4, 8, 13},
{9, 1, 0, 2},
{0, 2, 6, 3, -1, -8}
}; // Creates the array
Reverse reverse = new Reverse();
reverse.matrixReverse(data);
}
}
正如您所看到的,它只打印前3行数字,但我需要它来打印所有的行。您的列是可变宽度的,但您从第一行获得宽度(可能根本不存在!)。在访问数组元素之前,需要检查数组的大小。您还可以切换数组大小参数,首先从行开始 要解决特定的问题,需要为行循环中的每一行设置列值
void matrixReverse(int[][] data) {
int rowWidth = data.length;
int[][] reversedData = new int[rowWidth][];
for (int row = rowWidth - 1; row >= 0; row--) {
int colWidth = data[row].length;
int reverseRow = rowWidth - 1 - row;
reversedData[reverseRow] = new int[colWidth];
for (int col = colWidth - 1; col >= 0; col--) {
int reverseCol = colWidth - 1 - col;
reversedData[reverseRow][reverseCol] = data[row][col];
}
}
for (int row = 0; row < rowWidth; row++) {
int colWidth = reversedData[row].length;
for (int col = 0; col < colWidth; col++) {
System.out.println(reversedData[row][col]);
}
System.out.println();
}
}
void matrixReverse(int[][]数据){
int rowWidth=data.length;
int[][]反向数据=新int[rowWidth][];
对于(int row=rowWidth-1;row>=0;row--){
int colWidth=数据[行].长度;
int reverseRow=行宽-1-行;
reversedData[reverseRow]=新整数[colWidth];
对于(int col=colWidth-1;col>=0;col--){
int reverseCol=colWidth-1-col;
reversedData[reverseRow][reverseCol]=数据[row][col];
}
}
对于(int row=0;row
p.S.row_val和Colu val都是坏名字。它们是宽度而不是值,Java中的命名约定是colWidth和rowWidth而不是col\u width或row\u width。您的列是可变宽度,但您从第一行(可能不存在!)获取宽度。在访问数组元素之前,需要检查数组的大小。您还可以切换数组大小参数,首先从行开始 要解决特定的问题,需要为行循环中的每一行设置列值
void matrixReverse(int[][] data) {
int rowWidth = data.length;
int[][] reversedData = new int[rowWidth][];
for (int row = rowWidth - 1; row >= 0; row--) {
int colWidth = data[row].length;
int reverseRow = rowWidth - 1 - row;
reversedData[reverseRow] = new int[colWidth];
for (int col = colWidth - 1; col >= 0; col--) {
int reverseCol = colWidth - 1 - col;
reversedData[reverseRow][reverseCol] = data[row][col];
}
}
for (int row = 0; row < rowWidth; row++) {
int colWidth = reversedData[row].length;
for (int col = 0; col < colWidth; col++) {
System.out.println(reversedData[row][col]);
}
System.out.println();
}
}
void matrixReverse(int[][]数据){
int rowWidth=data.length;
int[][]反向数据=新int[rowWidth][];
对于(int row=rowWidth-1;row>=0;row--){
int colWidth=数据[行].长度;
int reverseRow=行宽-1-行;
reversedData[reverseRow]=新整数[colWidth];
对于(int col=colWidth-1;col>=0;col--){
int reverseCol=colWidth-1-col;
reversedData[reverseRow][reverseCol]=数据[row][col];
}
}
对于(int row=0;row
p.S.row_val和Colu val都是坏名字。它们是宽度而不是值,Java中的命名约定是colWidth,rowWidth而不是col_-width或row_-width。行,int[][]reversedData=new int[][rowWidth];遇到问题,因为新int后的第一对方括号为空。很抱歉,我还是java新手,而且我在学校压力很大,所以如果有任何帮助,我将不胜感激。@JoshC25我的坏朋友改变了语法。我还没来得及测试它,而且我已经很久没有使用2d数组了;遇到问题,因为新int后的第一对方括号为空。很抱歉,我还是java新手,而且我在学校压力很大,所以如果有任何帮助,我将不胜感激。@JoshC25我的坏朋友改变了语法。我还没有时间测试它,我已经很久没有使用2d阵列了。