Почему значение моего массива объектов в Java остается прежним - PullRequest
0 голосов
/ 21 мая 2018

Я запутался, почему мой массив Object по-прежнему такой же.Я пытался посчитать индекс из массива.Как мне подсчитать индекс?

public class TryArray {

    Students[] arr;

    public void add(Students std) {
        for (int i = 0; i < arr.length ; i++) {
            arr[i] = std;
         System.out.println(std); //it willbe more than one time displayed
            break;
        }
    }

    public TryArray(int lengthOfArray) { //Constructor for the length Array
        arr = new Students[lengthOfArray];
    }
}

А вот и мой основной класс test1.java

public class test1 {

    public static void main(String[] args) {
        TryArray val = new TryArray(4);
        Students a1 = new Students(1, "Bob", "Julius");
        Students a2 = new Students(2, "Joe", "Chris");
        Students a3 = new Students(3, "Christian", "Henderson");
        Students [] arr = {a1,a2,a3};       
        val.add(a1);
        val.add(a2);
        val.add(a3);
    }
}

Ожидаемый результат:

1, Bob, Julius
2, Joe, Chris
3, Christian, Henderson

Я что-то пропустил?

1 Ответ

0 голосов
/ 21 мая 2018

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

Код вашего TryArray класса может быть переписан следующим образом:

public class TryArray {

    //array to store the students (elements)
    private Students[] arr;
    //counter of how many students are stored by this instance
    private int size;

    public void add(Students std) {
        /*
        the code here makes no sense, see explanation above
        for (int i = 0; i < arr.length ; i++) {
            arr[i] = std;
         System.out.println(std); //it willbe more than one time displayed
            break;
        }
        */
        if (size < arr.length) {
            arr[size++] = std;
            //this is for testing purposes only, in real life code
            //you shall avoid code like this here
            System.out.println(std);
        }
    }

    public TryArray(int lengthOfArray) { //Constructor for the length Array
        arr = new Students[lengthOfArray];
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...