ArrayList java 中的十进制到二进制

Decimal to Binary within an ArrayList java

输入是一个十进制数,输出应该是 ArrayList 中二进制形式的相同数字,但由于某种原因它只输出 1s

Digit是一个class,它的唯一值是一个int"bit"和一个2位加法器。

private ArrayList<Digit> numbers;
private Digit number;

public Converter(int val){
    numbers = new ArrayList<Digit>();
    number = new Digit(val);
    if (val == 1 || val == 0){
        numbers.add(number);
    } else{
        while (val >= 1){
            number.setValue(val % 2);
            numbers.add(number);
            val = val/2;
        }
    }
}

public String toString(){
    return "" + numbers;
}

这是输出正确数量的元素,但它们都是 1。

例如。 5 = 1,1,1 而不是 1,0,1。

您正在使用同一个 Digit 对象来占据 ArrayList 中的所有位置,因此它只显示写入该对象的最后一个值。

在 ArrayList 中存储对象的克隆以获得所需的结果。