2017-01-23 125 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循环之外声明它。