【问题标题】:Multidimensional arrays java多维数组java
【发布时间】:2018-10-17 16:11:21
【问题描述】:

有人可以帮助我吗? 我是java编程新手,不知道如何为多维数组进行冒泡排序。我正在尝试获取排序数组{{1, 8, 48, 55}, {75, 88, 98, 103} } 这是我的代码:

int[][] arr2 = {{98,8,103,55}, {88,48,75,1}};

    for (int i = 0; i < arr2.length; i++)
    {
        for (int j = 0; j < arr2[i].length; j++) 
        {
            for (int k = 0; k < arr2[i].length; k++)
            {
                for (int l = 0; l < arr2[j].length; l++)
                {
                    if(arr2[j][l] > arr2[j][l+1])
                    {
                        int tmp = arr2[j][l];
                        arr2[j][l] = arr2[j][l+1];
                        arr2[j][l+1] = tmp;
                    }
                }
            }
        }
    }

我收到一条错误消息“线程“主”java.lang.ArrayIndexOutOfBoundsException:4中的异常:4”

【问题讨论】:

  • 欢迎来到 StackOverflow。你想得到什么结果?您的代码实际表现如何与那不同?来自Help center:“寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定问题或错误以及重现它所需的最短代码问题本身。没有明确问题陈述的问题对其他读者没有用处。请参阅:How to create a Minimal, Complete, and Verifiable example。"
  • 我正在尝试获取 {{1, 8, 48, 55}, {75, 88, 98, 103} }
  • 请编辑您的问题以包含该信息以及您的代码实际生成的信息,如帮助中心指南所述。此外,还应说明应如何从输入中导出输出。您想要实现的关系远非显而易见。

标签: java sorting multidimensional-array bubble-sort


【解决方案1】:
for (int l = 0; l < arr2[j].length; l++)

l 循环到 arr2[j] 的最大索引。

if(arr2[j][l] > arr2[j][l+1])

arr2[j][l] = arr2[j][l+1];

前面提到的循环的最后一次迭代现在肯定会崩溃,因为 l+1 自动超出范围,因为您没有在循环内修改它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 2013-06-29
    • 2018-01-05
    • 2016-06-22
    • 2012-04-27
    • 2015-12-12
    • 1970-01-01
    相关资源
    最近更新 更多