morannarom 2022-09-24 12:22 采纳率: 100%
浏览 35
已结题

运行结果出问题不能理解求

问题为Java实现二维数组排序

import java.util.Arrays;

public class java {
    public static void main(String[] args){
        int[][] m=new int[][]{{4,5},{1,7},{4,2},{1,2},{1,1},{4,1}};
        sort(m);
        for (int i=0;i<m.length;i++)
            System.out.print(Arrays.toString(m[i]));
    }
    public static void sort(int[][] array){
        for (int i = 0; i < array.length-1; i++) {
            for (int j = 0; j < array.length-1-i; j++) {
                if (large(array[j],array[j + 1])) {
                    int[] temp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = temp;
                }
            }
        }
    }
    public static boolean large(int[] a,int[] b) {

       if (a.length > b.length)
            return true;
        else if (b.length > a.length)
            return false;
        else {
            for (int i=0;i<a.length;i++){
                if (a[i]>b[i]) {
                    return true;
                }
            }
        }
        return false;
    }
}


运行结果应该是将这个二维数组由小到大排序
但结果为这个:
[1, 1][4, 1][1, 2][4, 2][1, 7][4, 5]
进程已结束,退出代码0
我也不知道哪里出了毛病请求帮我修改一下代码,预期结果应该是[1, 1][1,7][1, 2][4, 1][4,2][4, 5]

  • 写回答

2条回答 默认 最新

  • Java Fans 全栈领域优质创作者 2022-09-24 14:49
    关注

    代码如下:

    
    import java.util.Arrays;
    
    public class java {
        public static void main(String[] args) {
            int[][] m = new int[][] { { 4, 5 }, { 1, 7 }, { 4, 2 }, { 1, 2 },
                    { 1, 1 }, { 4, 1 } };
            sort(m);
            for (int i = 0; i < m.length; i++)
                System.out.print(Arrays.toString(m[i]));
        }
    
        public static void sort(int[][] array) {
            for (int i = 0; i < array.length - 1; i++) {
                for (int j = 0; j < array.length - 1 - i; j++) {
                    if (large(array[j], array[j + 1])) {
                        int[] temp = array[j];
                        array[j] = array[j + 1];
                        array[j + 1] = temp;
                    }
                }
            }
        }
    
        public static boolean large(int[] a, int[] b) {
            if (a.length > b.length)
                return true;
            else if (b.length > a.length)
                return false;
            else {
                for (int i = 0; i < a.length; i++) {
                    if (a[0] < b[0]) {
                        return false;
                    }
                    if (a[i] > b[i]) {
                        return true;
                    }
                }
            }
            return false;
        }
    
    }
    
    

    运行效果:

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月3日
  • 已采纳回答 9月25日
  • 创建了问题 9月24日

悬赏问题

  • ¥15 前端echarts坐标轴问题
  • ¥15 CMFCPropertyPage
  • ¥15 ad5933的I2C
  • ¥15 请问RTX4060的笔记本电脑可以训练yolov5模型吗?
  • ¥15 数学建模求思路及代码
  • ¥50 silvaco GaN HEMT有栅极场板的击穿电压仿真问题
  • ¥15 谁会P4语言啊,我想请教一下
  • ¥15 这个怎么改成直流激励源给加热电阻提供5a电流呀
  • ¥50 求解vmware的网络模式问题 别拿AI回答
  • ¥24 EFS加密后,在同一台电脑解密出错,证书界面找不到对应指纹的证书,未备份证书,求在原电脑解密的方法,可行即采纳