2017-01-23 69 views
1

我想從整數中分離數字,然後將它們放入數組中。將整數元素添加到列表中JAVA

除第一個元素外,所有元素都打印爲0.有人可以解釋爲什麼會發生這種情況嗎?

public class Doom{ 
    public static void main(String[] args){ 
     int number = 1234; 
     int[] list = new int[5]; 
     while (number > 0) { 

      int x = 0; 
      int fork = (number%10); 
      System.out.println(fork); 
      list[x] = fork; 
      x++; 
      number = number/10; 
     } 
     for (int x : list){ 
      System.out.println(x); 
     } 

    } 
} 
+2

你的問題,除了最好的變量名,是'int x = 0;'在你的while循環中。它在每次迭代時都保持重置爲0。 – Welbog

+0

'x = 0'在每次迭代時執行... – rom1v

+1

哈哈,謝謝,我現在感覺很愚蠢。 – KillerHawx

回答

0

您的程序中存在相當多的錯誤。最大的一點是,你正在將x初始化爲0,然後在while循環內將其遞增1。它會繼續將你的數字存儲在同一位置(第0位)。比較下面的代碼片段,並嘗試去學習你的錯誤:

public class Doom{ 
    public static void main(String[] args){ 
     int number = 1234; 
     int[] list = new int[String.valueOf(number).length()]; 
     int x = 0; 
     while (number > 0) {   
      int fork = (number%10); 
      System.out.println(fork); 
      list[x] = fork; 
      x++; 
      number = number/10; 
     } 
     for (int y : list){ 
      System.out.println(y); 
     } 

    } 
} 
+0

它也可以初始化爲0。但是你需要做'list [x] = fork'。相應地更新了我的答案。 – VHS

+1

@Tom。涼。感謝您指出。 – VHS

+0

如何直接使用整數長度?我的意思是像int [] list = new int [number.length],沒有錯誤當然 – KillerHawx

2

的問題是,您聲明x循環,所以它被重置每次0。您想要將int x = 0;行移動到循環之外的while (number > 0) {行之上。然後它將只被初始化爲0一次,並且每次通過循環都可以通過x++行爲其分配一個新值。

+0

感謝兄弟:3,我現在覺得很蠢 – KillerHawx

1

您一直在循​​環中重新聲明x,導致只有第一個索引具有有意義的數據。將它移動到循環的外部。

0

您每次都將x重新初始化爲0。在while循環之外聲明它。