gpt4 book ai didi

java - Java 中的 2D Int 数组反转

转载 作者:行者123 更新时间:2023-12-02 02:55:06 24 4
gpt4 key购买 nike

我遇到的问题是我必须创建一个程序,该程序使用一个对象来反转二维数组中每行的元素并打印出结果矩阵。我的代码仅反向打印出每行的前 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][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);
}
}

输出为:

6
2
0

0
1
9

4
4
1

5
2
3

如您所见,它只打印行的前 3 个数字,但我需要它来打印所有行。

最佳答案

您的列的宽度是可变的,但您从第一行获取宽度(它甚至可能不存在!)。在访问数组的元素之前,您需要检查数组的大小。您还可以切换数组大小参数,首先从行开始。

要解决您的特定问题,您需要为行循环内的每一行设置 col_val。

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();
}
}

附注row_val 和 col_val 是不好的名字。它们是宽度而不是值,Java 中的命名约定是 colWidth 和 rowWidth,而不是 col_width 或 row_width。

关于java - Java 中的 2D Int 数组反转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43242106/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com