2011-03-11 142 views
2

这次我想打印一个数组,从头到尾。Java中的打印阵列

这是我写的:

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的错误notifactions。 我很乐意提供协助。

+0

我只是想指出,我输入这种形式的数组号: {1 2 3 4},在运行配置选项卡。 – 2011-03-11 15:22:26

+1

数组基于零 - 不应该从args.length - 1开始?如果数组有4个条目,其长度将为4,并且其元素将被索引为0,1,2和3 – DaveH 2011-03-11 15:22:36

+0

您是否尝试过args.length -1?数组是基于0的,所以array [1]是它的第二个元素。如果长度是15,那么最后一个元素是数组[14] – Robert 2011-03-11 15:24:25

回答

10

在Java数组开始0。所以长度5的阵列具有与索引0 to 4

以下语句从5 to 0

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

环(为大小为5的阵列)

更改它元素来

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

和宾果! PS:其实你一直循环到0,所以你可能已经知道数组开始于0

+0

谢谢你nivas! – 2011-03-11 15:25:47

3

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

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

谢谢Kvista! – 2011-03-11 15:27:20

3

你几乎在那里。你需要从int i = args.length - 1开始,因为数组索引从0开始,并且数组的最后一个元素始终为长度减1.

+0

谢谢亚当! – 2011-03-11 15:29:52

3

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

只要改变int i = args.lengthint i = args.length - 1

顺便说一句,这些都不是“日蚀错误notifactions”,他们是Java异常:)

+0

谢谢索林! – 2011-03-11 15:30:16

3

数组。长度给出元素的个数数组(从1开始)中,但数组的下标开始为0,所以在第一次迭代尝试访问args[4]当最后一个元素实际上是args[3]和数组的大小是4

更改您的代码:

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

,你会被罚款

+0

谢谢戴夫! – 2011-03-11 15:24:27

+0

你忘了-1在args.length我相信 – Robert 2011-03-11 15:26:19

+0

@罗伯特好电话,谢谢 – 2011-03-11 16:17:27

2

你做ARGS(args.length)那是无效的,你去的地方后,最后在数组中。 一个开始于0,然后进直到长度 - 1

3

可以访问直到(length - 1)在阵列

一个被索引0的阵列,其是{a, b, c}, ,b为1,c为2,长度为3但你不能在第三位访问数组。

+0

谢谢你Vadiklk! – 2011-03-11 15:26:48

+0

你应该尝试做“Tohna 1”HW自己btw。 – Vadiklk 2011-03-11 15:27:42

+1

我试图在没有任何成就的情况下意识到什么是错误的。我自己做,没有别人学习的危害。 – 2011-03-11 15:33:55

3

Array索引从0开始。因此,最后一个索引是长度-1。

当你有具有5个元素的阵列,那么最后一个具有索引4

你的环必须是

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

运行您的环路(这是在foreach语法)

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

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

3

如果你要这样做你的循环,你将不得不从args.length - 1开始这样想,如果你有一个单个元素的数组长度将返回1,唯一可访问的索引将是根据您的代码,您将从索引1开始,因此ArrayIndexOutOfBoundsException。

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所抱怨的。

3

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

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

谢谢Max! – 2011-03-11 15:43:50

3

所有其他的答案是正确的,但这里是另一种方式在Java中(相同的复杂顺序)这样做

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

它横贯而不是两次一次,但如果你需要数组留逆转以备后用,这是更好的

+0

我会记住这个!谢谢。 – 2011-03-11 15:48:04

1

你太高指数开始:

只需更换I = args.length其中i = args.length - 1

啊我记得我tohna 1第二个练习:)

+0

谢谢弗拉德! :) – 2011-03-11 15:42:57