这次我想从头到尾打印一个数组。
这就是我写的:
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错误通知。 我很乐意帮助你。
答案 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秒练习:)