我试图在循环中的每次迭代中使用2.4增量将值传递到我的数组中。这是我的代码:
import java.util.*;
public class RunningArray {
public static void main(String[] args) {
double [] running = new double [10];
int i;
for (i=0; i<running.length; i+=2.4)
running[i]=i;
System.out.println(running[i]);
}
}
但是当我尝试print (running[i])
时,我收到了错误
线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:10 在RunningArray.main(RunningArray.java:26)
有人可以解释一下原因吗?
答案 0 :(得分:1)
循环计数器很好,真正的问题是因为你没有在大括号中包含running[i]=i;
,这是for循环中唯一的语句。您在for循环外打印running[i]
,因此i >= running.length
(在这种情况下为10)。
答案 1 :(得分:0)
例外是自我解释的。 i的值超出数组长度10.在访问数组值之前打印i值,您将知道问题。
i = i + 2.4的任何原因?
在任何时候,我都不应该跨越10的数组长度。
答案 2 :(得分:0)
这是因为变量i是int类型,每次将它递增2.4时,只会将2添加到其值。
for (i=0; i<running.length; i+=2.4)
System.out.print(i+", ");
Output: 0, 2, 4, 6, 8,
但是在测试循环条件为假之前,i增加2使其值为10。 当你写下没有大括号的下一行时,它取i的最后一个值,即10
System.out.println(running[i]);
由于i = 10的运行[i]不可用,因此会出现异常。
像这样写
for (i=0; i<running.length; i+=2.4)
{ running[i]=i;
System.out.println(running[i]);
}
Output:
0.0
2.0
4.0
6.0
8.0
不要将2.4添加到i的值,使用另一个double数据类型的变量并将其递增2.4并将其存储在数组中。
double [] running = new double [10];
double d=0.0;
for (int i=0; i<running.length; i++)
{
d+=2.4;
running[i]=d;
System.out.println(running[i]);
}
output:
2.4
4.8
7.199999999999999
9.6
12.0
14.4
16.8
19.2
21.599999999999998
23.999999999999996
答案 3 :(得分:-2)
你也将i实例化为一个int,这意味着每次都会删除.4。将变量初始化为double,并在逐步执行迭代时携带小数点。
double [] running = new double [10];
Double i;
for (i=0.0; i<running.length; i+=2.4)
{
running[i]=i;
System.out.println(running[i]);
}