在Java中从数组打印值时出现异常错误

时间:2015-10-18 18:32:21

标签: java arrays indexoutofboundsexception

我试图在循环中的每次迭代中使用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)

有人可以解释一下原因吗?

4 个答案:

答案 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]);
 }
相关问题