[英]Exception error when printing values from an array in Java
我試圖在循環中的每次迭代中使用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])
時,出現了錯誤
線程“主”中的異常java.lang.ArrayIndexOutOfBoundsException:在RunningArray.main處為10(RunningArray.java:26)
有人可以解釋為什么嗎?
循環計數器很好,真正的問題是因為您還沒有包含running[i]=i;
大括號中,這是for循環中的唯一語句。 您正在for循環外打印running[i]
,所以i >= running.length
(在這種情況下為10)。
例外是不言自明的。 i的值超出了數組長度10。在訪問數組值之前打印i值,您將知道問題所在。
i = i + 2.4的任何原因?
在任何時候,我都不應越過10的數組長度。
這是因為變量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的running [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
不要在i的值上加上2.4,使用另一個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
您還將i實例化為int,這意味着每次都會刪除.4。 將變量初始化為雙精度變量,並在逐步執行迭代時將其攜帶小數點。
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]);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.