用Java打印数组
这次我想从头到尾打印一个数组 这是我写的:用Java打印数组,java,arrays,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 位于Assign
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。
我很乐意提供帮助。Java对数组使用0索引,因此您的args.length需要考虑这一点;您应该在以下时间之前从一点开始:
for (int i = args.length-1; i >=0; i--){
你就快到了。您需要从
int i=args.length-1开始,因为数组从0开始索引,数组的最后一个元素总是长度减1。因为数组从索引0开始,所以最后一个元素位于args.length-1
位置。
您正试图访问array.length处的元素,因此出现了ArrayIndexOutOfBoundsException
只需将inti=args.length
更改为inti=args.length-1
顺便说一句,这些不是“Eclipse错误notifactions”,它们是Java异常:)。数组的长度给出了数组中元素的计数(从1开始),但数组索引从0开始,因此当最后一个元素实际上是args[3]时,第一次迭代尝试访问args[4]
且阵列的大小为4
将代码更改为:
for(int i = args.length - 1; i >= 0; i--)
你会没事的你做了args(args.length)那是无效的,你去了数组中最后一个之后的地方。
从0开始,一直到长度-1,直到数组中的(长度-1)
为止
一个数组,{a,b,c}
,,
a的索引为0,b的索引为1,c的索引为2。长度为3,但无法访问第3位的数组。数组索引从0开始。最后一个索引是length-1
如果数组有5个元素,那么最后一个元素的索引是4
你的循环必须是
for (int i = args.length-1; i >=0; i--){
在java中,数组以0
开头。因此,长度为5的数组具有索引为0到4的元素
以下声明
for (int i = args.length; i >=0; i--)
从5到0的循环(对于大小为5的数组)
换成
for (int i = args.length-1; i >=0; i--)
宾果
PS:实际上,您循环到0
,所以您可能已经知道数组从0
开始 作为运行循环(这是foreach语法)
相反。数组枚举以0开始,以array.length-1
结束。异常还告诉您引发异常时的元素编号。如果要以这种方式循环,则必须从args.length-1开始。请这样考虑,如果有一个具有单个元素长度的数组,则返回1,并且唯一可访问的索引将为0。根据您的代码,您将从索引1开始,因此出现ArrayIndexOutOfBoundsException。关闭!只是这一行:
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所抱怨的。在Java数组中,索引从0开始。
例如,args包含4个元素,它们的索引将是0,1,2,3,但agrs.length是4。您试图获取元素,该元素位于数组之外
int i = args.length - 1 // will work
所有其他答案都是正确的,但在Java中还有另一种方法(相同的复杂性顺序)
List-asList=Arrays.asList(args);
收款。反向(asList);
for(字符串参数:asList){
System.out.println(arg+“”);
}
它将遍历两次而不是一次,但如果您需要将数组保持反向以便以后使用,则最好从索引太高开始:
只需将i=args.length替换为i=args.length-1即可
啊,我记得我的tohna 1秒练习:)我只想提到,我以以下形式输入了数组编号:{1 2 3 4},在运行配置选项卡中。数组是基于零的-您不应该从args.length-1开始吗?如果数组有4个条目,那么它的长度将是4,它的元素将被索引为0、1、2和3。您是否尝试过args.length-1?数组是基于0的,因此数组[1]是它的第二个元素。如果长度是15,那么最后一个元素是数组[14]哇,这是很多答案!专家开发人员喜欢你的问题:)@Nir avnon,在Meta上看到这个问题:你忘记了args中的-1。长度我相信你应该自己尝试做“Tohna 1”HW,顺便说一句。我试图认识到什么是错的,但没有任何成功。我是自己做的,向别人学习没有坏处。
int i = args.length - 1 // will work
List<String> asList = Arrays.asList(args);
Collections.reverse(asList);
for (String arg : asList) {
System.out.println(arg + " ");
}