Справка конструктора копирования, попытка скопировать логический массив. Java

Я просмотрел как можно больше предыдущих вопросов, но никогда не видел вопроса, в котором в качестве переменной использовался логический массив.

Вот мой класс:

public class Register {

private boolean[] register;
private int length;

    //Normal constructor
public Register(int n) {

    if (n == 8 || n == 16 || n == 32 || n == 64) {

        length = n;
        register = new boolean[length];

        for (int i = 0; i < length; i++) {

            register[i] = false;
        }

    } else {

        throw new RegisterException(
                "A register can only contain 8, 16, 32, or 64 bits");
    }

}

// Creates a copy of reg (an existing Register)
public Register(Register reg) {

    length = reg.length;
    register = new boolean[reg.register.length];

    System.arraycopy(reg.register, 0, this.register, 0, reg.register.length);
}

В моей программе драйвера я загружаю "1101101 "в register1, но когда я это сделаю: Зарегистрируйте регистр 2 = новый регистр (регистр 1);

и распечатайте оба результата. Я получаю:

0000000001101101

0000000000010110

Не совсем уверен, что происходит Оо, любая помощь будет оценена, спасибо!

Это мой метод загрузки. Я не стал помещать его сюда, потому что это может быть трудно прочитать:

public void load(String binaryRep) {

    String allTheBits = binaryRep;
    int charPosition = 0;
    int loadLength;
    int binaryNum = 0;
    String index = "";
    String trimmedIndex = "";

    if (allTheBits.length() > 0 && allTheBits.length() <= length) {

        loadLength = allTheBits.length();

        for (int i = length - (loadLength); i < length; i++) {

            index = allTheBits.charAt(charPosition) + "";
            trimmedIndex = index.trim();
            binaryNum = Integer.parseInt(trimmedIndex);

            if (binaryNum == 1) {

                register[i] = true;

            } else if (binaryNum == 0) {

                register[i] = false;
            }

            charPosition++;

        }
    } else {
        throw new RegisterException("You can only load 0 - " + length
                + "bits.");
    }
}
5
задан Tim 24 July 2011 в 16:06
поделиться