在Java中将对象分配给数组,它返回null

时间:2013-03-27 14:03:46

标签: java

我创建了一个程序并将客户对象分配给customers数组,但是当我尝试在数组中获取对象时,它返回null。我是Java的新手,请帮我解决我的错误。

public class Customer {

    private String firstname,lastname;

    public Customer(String f,String l){
        this.firstname = f;
        this.lastname = l;
    }

    public String getFirstName(){
        return firstname;
    }

    public String getLastName(){
        return lastname;
    }   
}

public class Bank {

    private Customer [] customers;
    private int numberofCustomers;

    public Bank(){
        customers = new Customer [5];
        numberofCustomers = 0;

    }

    public void addCustomer(String f,String l){
        int i = numberofCustomers++;
        customers[i] = new Customer(f,l);
    }

    public int getNumberofCustomer(){
        return numberofCustomers;
    }

    public Customer getCustomerMethod(int index){
        return customers[index];
    }
}

public class TestAccount {

public static void main (String [] args){

        Bank b = new Bank();
        b.addCustomer("Test", "LastName");
        System.out.print(b.getNumberofCustomer());
        System.out.print(b.getCustomerMethod(1));

    }
}

3 个答案:

答案 0 :(得分:5)

数组索引以开头。您已在数组中的索引0第一个元素处添加了一个客户,您应该使用相同的索引来获取该元素。目前索引1没有任何内容,因此您的代码返回null;

System.out.print(b.getCustomerMethod(0));

假设数组大小为5,因此其索引将为0,1,2,3,4 其中0是第一个索引,4是最后一个索引。

在此行b.addCustomer("Test", "LastName");之后,您的数组将是:

Array: [Customer("Test", "LastName") , null , null, null, null]
Index:                0             ,  1   ,  2  ,   3 ,  4

当你尝试'是System.out.print(b.getCustomerMethod(1));'它返回null。正如您所看到的,您的数组在索引1处为空。

答案 1 :(得分:0)

您添加了一个客户,然后您要求第二个客户。数组索引从零开始。

答案 2 :(得分:0)

您的代码有三个问题:

  • 索引以0
  • 开头
  • 您正在使用后增量运算符将值赋给iint i = noOfCustomers++;会将i的值设为0。 因此,您要在索引0处添加客户并从索引1中获取。因此,您获得null
  • 银行应该使用ArrayList