Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Java打印数组_Java_Arrays - Fatal编程技术网

用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 + " ");
    }