You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 11:16:56