为什么我的int []数组循环超出范围?

Lan*_*ine 1 java arrays for-loop indexoutofboundsexception

警告: 我对Java和编程很新.我会尽量保持清醒.

我试图采用一个简单的整数(inputnumber),将其转换为字符串(temp),创建一个新的int []数组(numberarray),并从最后一个数字开始循环遍历此int []数组,并打印出名称数字.

由于Eclipse的调试,我很确定从整数到String到int []数组的转换是有效的,但是为什么我从Eclipse获取一个这样一个简单的for循环的ArrayOutOfBounds消息,我很难过.任何关于我做错的线索都表示赞赏.

    String temp = inputnumber.toString();
    int[] numberarray = new int[temp.length()];

    for (int i=0;i<temp.length();i++) {
        numberarray[i] = temp.charAt(i);
    }


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

        if (numberarray[i]==1) System.out.print("one.");
        if (numberarray[i]==2) System.out.print("two.");
        if (numberarray[i]==3) System.out.print("three.");
        if (numberarray[i]==4) System.out.print("four.");
        if (numberarray[i]==5) System.out.print("five.");
        if (numberarray[i]==6) System.out.print("six.");
        if (numberarray[i]==7) System.out.print("seven.");
        if (numberarray[i]==8) System.out.print("eight.");
        if (numberarray[i]==9) System.out.print("nine.");
        if (numberarray[i]==0) System.out.print("zero");
    }
Run Code Online (Sandbox Code Playgroud)

我得到的Eclipse错误消息是:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at jt.Intermediate8.main(Intermediate8.java:44)
Run Code Online (Sandbox Code Playgroud)

nem*_*035 7

数组在Java中是0索引的.这意味着最后一个值位于索引NUMBER_OF_ELEMENTS - 1

因此,在for循环中,您应该更改

int i=temp.length()     // this is last index + 1 (since we are starting from 0)
Run Code Online (Sandbox Code Playgroud)

至:

int i=temp.length() - 1 // this is last index
Run Code Online (Sandbox Code Playgroud)

另外,正如@ brso05所说,不要忘记将循环结束条件更改为,i>=0因为向后的最后一个值将在索引0处.

你的for循环:

for (int i = temp.length(); i >= 0; i--)
Run Code Online (Sandbox Code Playgroud)