Объекты и ArrayLists - PullRequest
       3

Объекты и ArrayLists

0 голосов
/ 14 марта 2012

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

Что мне нужно сделать, так это создать массив объектов. Будь то массив данных, содержащий объекты, или массив объектов, содержащий объекты, мне все равно.

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

Моя проблема, когда я пытаюсь вызвать конкретную учетную запись. Допустим, я вызываю массив массивов или объектов, когда я пытаюсь вызвать исходные объекты внутри любого из них, они пусты или несовместимы. Как будто данные просто собираются вместе.

вот код, который я должен помочь объяснить.

static ArrayList AccountList = new ArrayList();
    static Object[] User = new Object[8];

где я добавляю данные в объект User

type = AddAccount.jComboBox1.getSelectedItem().toString();
    User[0] = type;
    number = AddAccount.jTextField1.getText();
    User[1] = number;
    owner = AddAccount.jTextField2.getText();
    User[2] = owner;
    date = AddAccount.jTextField3.getText();
    User[3] = date;
    balance = AddAccount.jTextField4.getText();
    User[4] = balance;
    fee = AddAccount.jTextField5.getText();
    User[5] = fee;
    rate = AddAccount.jTextField6.getText();
    User[6] = rate;
    minBalance = AddAccount.jTextField7.getText();
    User[7] = minBalance;
       AccountList.add(counter,User);
    counter++;

Я вызываю следующее, когда мне нужны данные, int selection просто ссылается на нужный объект

 public static void displayData(int selection) {
            int row = selection;
            Object temp = AccountList.get(selection);
            System.out.println(temp[0].toString); //<--WHY WONT THAT WORK?

        }

Любая помощь приветствуется, или альтернативные методы.

1 Ответ

4 голосов
/ 14 марта 2012

У вас есть некоторые проблемы, которые я могу отметить здесь:

  1. Вы продолжаете использовать тот же Object[], перед каждой вставкой вы должны создавать новые Object[] - в противном случае вы переопределите существующие данные.[помните, ArrayList содержит ссылки, если вы измените объект в нем, он также будет изменен в ArrayList.
  2. Вам необходимо привести temp к Object[] - илиеще лучше объявить AccountList как ArrayList<Object[]>
  3. После того, как все это сделано - это должно быть toString(), а не toString [это метод]

Не связано, но важно для удобства чтения: в Java принято, что переменные начинаются со строчных букв.Это помогает коллегам-программистам понять при чтении accountList, а не AccountList, что это переменная, а не класс.

Кроме того, как упомянул @GuillaumePolet, вы можете захотеть пересмотреть дизайн, вместоObject[] и, сохраняя его в ArrayList, вы можете создать свой собственный класс [MyBankAccount для примеров] с 8 полями и иметь AccountList типа ArrayList<MyBankAccount>.Вам будет намного проще следовать логике и поддерживать свой код таким образом!

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