Java二维对象数组反转实现问题求助
二维数组子数组反转问题解决
你的核心反转逻辑是正确的,输出未达预期大概率是没调用反转方法或数组输出方式错误,以下是修正后的完整代码及说明:
完整可运行代码
class Shape { private String name; public Shape(String name) { this.name = name; } @Override public String toString() { return name; } } public class ShapeReverseDemo { public static void main(String[] args) { // 初始化Shape对象 Shape triangle = new Shape("triangle"); Shape circle = new Shape("circle"); Shape square = new Shape("square"); Shape star = new Shape("star"); Shape pentagon = new Shape("pentagon"); Shape donut = new Shape("donut"); Shape[][] myShapes = {{triangle, circle, square}, {star, pentagon, donut}}; // 关键:调用反转方法 reverseShapes(myShapes); // 按二维结构遍历输出 for (Shape[] row : myShapes) { for (Shape shape : row) { System.out.print(shape + " "); } System.out.println(); } } public static void reverseShapes(Shape[][] myShapes) { for(int row = 0; row < myShapes.length; row++){ for(int col = 0; col < myShapes[row].length / 2; col++) { Shape temp = myShapes[row][col]; myShapes[row][col] = myShapes[row][myShapes[row].length - col - 1]; myShapes[row][myShapes[row].length - col - 1] = temp; } } } }
问题说明与修正点
- 必须调用反转方法:你之前的代码仅定义了
reverseShapes方法,但未在主逻辑中调用,导致反转逻辑从未执行。 - 正确输出数组:输出时需按二维数组的行结构遍历,确保每个子数组的元素被正确打印,避免将所有元素按一维顺序输出。
- 你的反转逻辑本身无问题:通过遍历每一行,交换当前列与对称位置的元素,实现了单个子数组的反转,完全符合你期望的
{{square, circle, triangle}, {donut, pentagon, star}}结果。
内容的提问来源于stack exchange,提问作者Doot
相关产品推荐
相关产品推荐

