2013-03-17 74 views
0
int[] tall = new int[28123]; 

for (int j = 1;j <= 28123; j++){ 
    int x = 0; 
    tall[x] = j; 
    x++; 
} 

此代碼有什麼問題?不應將此代碼執行以下步驟:將值添加到java中的數組中

  1. 創建名爲高的尺寸28123.
  2. 製作索引0 = 1,索引1 = 2等的陣列。

回答

5

不,您正在初始化每個循環中的x。更改爲:

int[] tall = new int[28123]; 
int x = 0; 

for (int j = 1;j<=28123;j++){ 
    tall[x] = j; 
    x++; 
} 

,或者甚至更好(因爲x總是等於j-1):

int[] tall = new int[28123]; 

for (int j = 1;j<=28123;j++){ 
    tall[j-1] = j; 
} 
0

始終爲您x0改變陣列的前值。

您可以使用:

int[] tall = new int[28123]; 

for (int j = 0;j<28123;j++){ 
    // Or whatever value you want to set. 
    tall[j] = j + 1; 
} 

或之前只是刪除X(int x=0)的初始化循環。

0

您總是在索引0處插入值。數組中的其他位置永遠不會被值填充。

你或許應該有這樣的:

for (int j = 1; j <= 28123; j++) { 
    tall[j-1] = j; 
} 
0

放置X = 0以外的for循環,這是問題

2

我建議你通過你的調試器調試程序代碼的步驟是它是什麼對於。

我期望你會看到的是,每次代碼循環int x = 0;設置。

2

你沒有一個,但很多的錯誤。它應該是:

int[] tall = new int[28123]; 

for (int j=0;j<28123;j++){ 
    tall[j] = j+1; 
} 

您的代碼在數組的所有位置放置0。因爲數組的最後一個索引是28123-1(Java中的數組從0開始!),所以它會拋出一個異常。

0

我明白你在做什麼,但我認爲你可以用下面的代碼做得更好。而且,這很容易。

int[] Tall = new int[28123]; 
    for(int i = 0; i<Tall.length ; i++){ 
    Tall[i]= i+1; 
    } 
    System.out.print(Arrays.toString(Tall)); 

「Arrays.toString(int [])」方法返回指定int數組內容的字符串表示形式。此外,爲了使用它,你將不得不使用:

import java.util.Arrays 

輸出將是這樣的:

[1,2,3,4,5,6,7,8,9,10,..............,28122,28123] 

我希望這有助於。

0
  • 第一行:創建數組。
  • 第三行循環從j = 1開始到j = 28123
  • 第四行給出變量x值(0),每次訪問循環時。
  • 第五行你把j值在索引0
  • 您1.做增量x的值(但它會被重置爲0,在4號線)
0
public class Array { 
    static int a[] = new int[101]; 
    int counter = 0; 
    public int add(int num) { 
     if (num <= 100) { 
      Array.a[this.counter] = num; 
      System.out.println(a[this.counter]); 
      this.counter++; 

      return add(num + 1); 
     } 
     return 0; 
    } 

    public static void main(String[] args) { 
     Array c = new Array(); 
     c.add(1); 
    } 
} 
第六行