2012-03-14 57 views
0

因此,我不会描述我所尝试过的,我只是简单地列出我正在尝试做的事情,因为迄今为止,每种方法都失败了,而且我相信这是我错过的简单东西。对象和数组列表

我需要做的是创建一个对象数组。无论是持有对象的数组列表还是持有对象的对象数组,我都不在乎。

我必须做一个银行业务程序,我有8个数据字段,每个集合组成一个账户,因此是一个对象。我首先将所有8个数据字段添加到一个对象中,然后将该对象添加到数组列表或对象数组中。

我的问题是,当我试图回忆一个特定的帐户。假设我调用arraylist或object数组,当我尝试调用其中任何一个的原始对象时,它们是空的或不兼容的。这就好像数据刚刚变得一团糟。

这是我必须帮助解释的一些代码。

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

,我将数据添加到目标用户

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选择只是指该对象我想

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

为什么你需要'静态'? – 2012-03-14 17:04:03

回答

4

你有一些问题,我可以在这里指出:

  1. 您继续使用相同的Object[],每次插入之前,你应该创建一个新Object[] - 否则你将覆盖现有的数据。 [请记住,ArrayList包含引用,如果您修改其中的对象,它也将在ArrayList中进行修改。
  2. 你需要投tempObject[] - 甚至更好,声明AccountListArrayList<Object[]>
  3. 这一切完成后 - 它应该是toString(),而不是toString [它是一种方法]

不相关,但对可读性很重要:在java中,约定是变量以小写字符开始。它可以帮助其他程序员理解,当读取accountList而不是AccountList它是一个变量,而不是一个类。

而且,@GuillaumePolet提到的,你可能要重新考虑,而不是使用Object[]的德兴,并将其存储在ArrayList,你可以建立自己的类[MyBankAccount的实例]与8场,并有AccountList类型ArrayList<MyBankAccount>。你会发现遵循逻辑并以这种方式维护你的代码要容易得多!

+0

是的,也是在相同的不相关的,但它会有所帮助,Java是一种面向对象的语言,所以不用Object []来建模对象,你实际上可以用这8个属性创建一个新类,那会更好 – 2012-03-14 17:11:10

+0

@GuillaumePolet:我同意,我专注于找出错误,并没有提到设计问题。但是,C不是OO语言,我会通过创建'struct' :)来遵循这条线。我编辑了答案并添加了这个问题。谢谢。 – amit 2012-03-14 17:17:10