TransWikia.com

Все значения массива null, но так быть не должно!

Stack Overflow на русском Asked by Aлиса on November 29, 2020

Возник вопрос, создала класс, в конструкторе цикл, где заполнила массив значениями, но при создании объекта и выводе на консоль все значения массива null. Совершенно не понимаю в чем ошибка:(
Звездочками указала проблемные зоны, подскажите пожалуйста, что не так(
выдается ошибка

package com.company;
import java.math.BigInteger;
import java.util.Random;
import java.util.Arrays;

 ** public class Main {
    public static void main(String[] args) {
      BigInteger[] d = new BigInteger[128];
        BigInteger[] d1 = new BigInteger[128];
        Bits bits = new Bits(d, d1);
        System.out.println(bits.getBits()); **

    }
}

class Bits {
    private final int size = 128;                 //поля экземпляра
    private final Random random = new Random();
    private BigInteger bstr2, bstr1;
    BigInteger[] nums1 = new BigInteger[128];
    BigInteger[] nums2 = new BigInteger[128];
    private BigInteger bits1 = new BigInteger(size, random);
    private BigInteger bits2 = new BigInteger(size, random);


    public Bits (BigInteger[] b1, BigInteger[] b2) {   //конструктор

       ** while (!bits1.equals(BigInteger.ZERO)) {
            bstr1 = bits1.mod(BigInteger.valueOf(2));
            for (int i=0; i<128; i++) {
                nums1[i] = nums1[i].add(bstr1);
            }
            bits1 = bits1.divide(BigInteger.valueOf(2));
        }
        nums1 = b1; **

        while (!bits2.equals(BigInteger.ZERO)) {
            bstr2 = bits2.mod(BigInteger.valueOf(2));
            for (int i=0; i<128; i++) {
                nums2[i] = nums2[i].add(bstr2);
            }
            bits2 = bits2.divide(BigInteger.valueOf(2));
        }
        nums2 = b2;

    }

    public String getBits() {
        return Arrays.toString(nums1);
    }

    public void ANDBits () {}

}

One Answer

Алиса, по-моему всё элементарно. Посмотрите на этот кусочек кода:

while (!bits1.equals(BigInteger.ZERO)) {
    bstr1 = bits1.mod(BigInteger.valueOf(2));
    for (int i=0; i<128; i++) {
        nums1[i] = nums1[i].add(bstr1);
}

Вы проинициализировали nums1, но не заполнили его, все его значения равны null. А вот тут: nums1[i].add(bstr1) вы пытаетесь у этого null (потому что nums1[i] == null, проверьте дебаггером) вызвать метод add().

Answered by Zhenyria on November 29, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP