簡體   English   中英

從Java中的數組打印值時出現異常錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM