Warning: 我对 Java 和一般编程非常陌生。我会尽量说得清楚。
我正在尝试取一个简单的整数(inputnumber
),将其转换为字符串(temp
),创建一个新的 int[] 数组(numberarray
),并从最后一位数字开始循环遍历这个 int[] 数组,并打印出该数字的名称。
我相当确定,由于 Eclipse 调试,从整数到字符串再到 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");
}
我收到的 Eclipse 错误消息是:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at jt.Intermediate8.main(Intermediate8.java:44)
Java 中的数组是从 0 索引的。这意味着最后一个值位于索引处NUMBER_OF_ELEMENTS - 1
因此,在你的for
循环,你应该改变
int i=temp.length() // this is last index + 1 (since we are starting from 0)
To:
int i=temp.length() - 1 // this is last index
另外,如@brso05说,不要忘记将循环结束条件更改为i>=0
因为向后移动的最后一个值将位于索引 0 处。
Your for
loop:
for (int i = temp.length(); i >= 0; i--)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)