Java 为什么我的int[]数组循环超出范围?
警告:一般来说,我对Java和编程非常陌生。我会尽量说清楚的 我试图获取一个简单的整数(Java 为什么我的int[]数组循环超出范围?,java,arrays,for-loop,indexoutofboundsexception,Java,Arrays,For Loop,Indexoutofboundsexception,警告:一般来说,我对Java和编程非常陌生。我会尽量说清楚的 我试图获取一个简单的整数(inputnumber),将其转换为字符串(temp),创建一个新的int[]数组(numberarray),从最后一个数字开始循环这个int[]数组,并打印出该数字的名称 我很确定,由于Eclipse调试,从integer到String再到int[]array的转换是有效的,但我不明白为什么我会从Eclipse获得一条ArrayOutOfBounds消息,用于这样一个简单的for循环。任何关于我做错了什么的
inputnumber
),将其转换为字符串(temp
),创建一个新的int[]数组(numberarray
),从最后一个数字开始循环这个int[]数组,并打印出该数字的名称
我很确定,由于Eclipse调试,从integer到String再到int[]array的转换是有效的,但我不明白为什么我会从Eclipse获得一条ArrayOutOfBounds消息,用于这样一个简单的for循环。任何关于我做错了什么的线索都是值得赞赏的
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");
}
您正在以temp.length()启动循环。这不是一个有效的索引。也许您想要temp.length()-1?您正在以temp.length()开始循环。这不是一个有效的索引。也许您需要temp.length()-1?数组在Java中是0索引的。这意味着最后一个值位于索引元素数\u-1 因此,在
for
循环中,您应该更改
int i=temp.length() // this is last index + 1 (since we are starting from 0)
致:
另外,正如@brso05所说,不要忘记将循环结束条件更改为i>=0
,因为最后一个向后的值将位于索引0处
您的for
循环:
for (int i = temp.length(); i >= 0; i--)
数组在Java中是0索引的。这意味着最后一个值位于索引元素数\u-1 因此,在
for
循环中,您应该更改
int i=temp.length() // this is last index + 1 (since we are starting from 0)
致:
另外,正如@brso05所说,不要忘记将循环结束条件更改为i>=0
,因为最后一个向后的值将位于索引0处
您的for
循环:
for (int i = temp.length(); i >= 0; i--)
您应该执行temp.length()-1。原因是数组以索引0而不是1开始,因此数组中的最后一个元素以长度-1存储。如果有10个元素,那么0-9是索引。如果要命中所有元素,请将i>0更改为i>=0
for (int i=(temp.length() - 1);i>=0;i--) {
您应该执行temp.length()-1。原因是数组以索引0而不是1开始,因此数组中的最后一个元素以长度-1存储。如果有10个元素,那么0-9是索引。如果要命中所有元素,请将i>0更改为i>=0
for (int i=(temp.length() - 1);i>=0;i--) {
谢谢你帮我解决这个非常明显的问题+1.如果您想点击所有元素,请确保执行i>=0而不是i>0,否则您将跳过第一个元素(请参阅我的帖子)。感谢您帮助我完成这一非常明显的任务+1.如果要点击所有元素,请确保执行i>=0而不是i>0,否则将跳过第一个元素(请参阅我的帖子)。