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)
数组在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)
归档时间: |
|
查看次数: |
1887 次 |
最近记录: |