用Java打印数组

时间:2011-03-11 15:19:32

标签: java arrays

这次我想从头到尾打印一个数组。

这就是我写的:

public class Arrays {
public static void main (String[] args){
    for (int i = args.length; i >=0; i--){
        System.out.print(args[i]+" ");
    }
}

这是错误消息: 线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:4     在Assignment02Q04.main(Assignment02Q04.java:5)。

仍然很难实现Eclipse错误通知。 我很乐意帮助你。

14 个答案:

答案 0 :(得分:10)

在java数组中以0开头。因此,长度为5的数组包含索引为0 to 4

的元素

以下陈述

for (int i = args.length; i >=0; i--)

来自5 to 0的循环(对于大小为5的数组)

将其更改为

for (int i = args.length-1; i >=0; i--)

和宾果!

PS:实际上你已经循环到0,所以你可能已经知道数组从0开始。

答案 1 :(得分:3)

Java对数组使用0索引,因此你的args.length需要考虑到这一点;你应该从一开始:

for (int i = args.length-1; i >=0; i--){

答案 2 :(得分:3)

你快到了。您需要从int i = args.length - 1开始,因为数组从0开始索引,并且数组的最后一个元素总是长度减去1。

答案 3 :(得分:3)

由于数组从索引0开始,因此最后一个元素位于args.length - 1位置。 您正在尝试访问array.length处的元素,因此ArrayIndexOutOfBoundsException

只需将int i = args.length更改为int i = args.length - 1

顺便说一句,那些不是“Eclipse错误通知”,它们是Java Exceptions:)

答案 4 :(得分:3)

。数组的长度给出了数组中元素的数量(从1开始),但是数组索引从0开始,所以当最后一个元素实际为{{1时,第一次迭代尝试访问args[4]并且数组的大小是4。

将您的代码更改为:

args[3]

你会没事的

答案 5 :(得分:3)

您可以访问数组中的(length - 1)

一个{a, b, c}的数组, a索引为0,b为1,c为2.长度为3,但您无法在第3位访问该数组。

答案 6 :(得分:3)

数组索引从0开始。所以最后一个索引是length-1。

如果你有一个包含5个元素的数组,那么最后一个包含索引4。

你的循环必须是

for (int i = args.length-1; i >=0; i--){

答案 7 :(得分:3)

运行你的循环(这是foreach语法)

for(String s : args) {
    System.out.print(s + " ");
}

代替。数组枚举从0开始,以array.length - 1结束。该异常还告诉您引发异常时的元素编号是什么。

答案 8 :(得分:3)

如果你打算以这种方式进行循环,你将不得不从args.length - 1开始这样想想,如果你有一个单元素长度的数组将返回1,并且只能访问index将为0.根据您的代码,您将从索引1开始,因此ArrayIndexOutOfBoundsException。

答案 9 :(得分:3)

关闭!就是这一行:

for (int i = args.length; i >=0; i--) {

需要改为:

for (int i = args.length-1; i >=0; i--) {

为什么呢? Java(和大多数语言)中的数组从0开始,以长度-1结束。因此,如果您有一个长度为3的数组,则有效索引将为0,1和2.长度为3的索引将无效,从而导致异常,这就是Java所抱怨的。

答案 10 :(得分:3)

在java数组中,索引从0开始。 例如,args包含4个元素,它们的索引将是0,1,2,3,但是args.length是4.你试图获取元素,它位于数组之外。

int i = args.length - 1 // will work

答案 11 :(得分:3)

所有其他答案都是正确的,但这是另一种在Java中执行此操作的方法(相同的复杂性顺序)

    List<String> asList = Arrays.asList(args);
    Collections.reverse(asList);
    for (String arg : asList) {
        System.out.println(arg + " ");
    }

它遍历两次而不是一次,但是如果你需要将数组保持反转以备后用,那就更好了

答案 12 :(得分:2)

你做了无效的args(args.length),你去了数组中最后一个之后的地方。 从0开始,直到长度 - 1

答案 13 :(得分:1)

你从过高的指数开始:

用i = args.length - 1

替换i = args.length

啊,我记得我的tohna 1秒练习:)