首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法理解数组边界

无法理解数组边界
EN

Stack Overflow用户
提问于 2018-08-03 13:26:37
回答 4查看 72关注 0票数 0

我最近一直在学习代码,但不幸的是,迭代数组和理解数组的长度属性,而不是越界。

我需要在Java中解决以下问题--输入几个数字,解析它们并将它们放入一个数组中,然后得到其中的三个最大数字,然后按降序打印它们。我设法做到了,但我确实需要查找最后一部分,因为我得到了ArrayIndexOutOfBoundsException。我已经硬编码了数组中的值,以便尝试理解它,但我希望在这方面提供一些帮助。

这是我的解决方案:

代码语言:javascript
运行
复制
    int[] numbers = {1, 2, 3, 4, 5, 6};

    Arrays.sort(numbers);

    int count = Math.min(3, numbers.length);
    for (int i = 0; i < count; i++) {
        System.out.println(numbers[i + numbers.length - 1]);

我在这里要做的是按升序打印它们,因为以降序打印它们将是numbersnumbers.length -1- i。在我的示例中,我得到了OutOfBounds。如果我做了i + numbers.length - 3,它就能工作。

有人能解释一下原因吗?我知道这是个愚蠢的问题,但我似乎无法理解。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-08-03 13:37:50

因此,在这个上下文中,让我们从数组访问的最小值和最大值的角度来看它

因此,对于i (0)的最小值,我们得到i + numbers.length - 1 = 0 + 6 - 1 = 5

对于i的最大值,我们要么得到3,要么得到numbers.length:

如为3:i + numbers.length - 1 = 3 + 6 - 1 = 8

在numbers.length的情况下,我们得到i + numbers.length - 1 = 6 + 6 - 1 = 12

您需要确保数组之间迭代的可能值总是会在数组的范围内给出一个值(显然不是这样)。

票数 1
EN

Stack Overflow用户

发布于 2018-08-03 13:38:00

数组类似于对象链的图像。如果知道这些对象的索引,则始终可以访问其中的任何对象。因此,在这种情况下,您有一个长度为9的数组,其中包含前9个正整数,在0到8之间将有有效的索引。

代码语言:javascript
运行
复制
 0  1  2  3  4  5  6  7  8
[1][2][3][4][5][6][7][8][9]

要打印数组中的值,可以使用:

代码语言:javascript
运行
复制
for (int i = 0; i < values.length; i++) {
    System.out.println(values[i]);
}

如果您想要向后打印它,那么您应该从它的最后一个索引开始,并减少i,直到它大于或等于数组的起始索引为止:

代码语言:javascript
运行
复制
for (int i = values.length - 1; i >= 0; i--) {
    System.out.println(values[i]);
}

每当您尝试访问超出有效索引范围的索引时,它将导致IndexOutofboundsException。因此,如果您喜欢在计算索引时调用任何算术,请注意这样一个事实,即您对它只有很少的有效值。

票数 2
EN

Stack Overflow用户

发布于 2018-08-03 13:34:52

试着跑

代码语言:javascript
运行
复制
for (int i = 0; i < count; i++) {
    System.out.println(i + numbers.length - 1);
}

它打印:

5 6 7

数组有6个项,索引从0到5。当您尝试获取具有索引>=6的项时,它将引发ArrayIndexOutOfBoundsException。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51673743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档