1

プログラムを作成し、顧客オブジェクトを顧客配列に割り当てましたが、配列内のオブジェクトを取得しようとすると、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));

    }
}
4

3 に答える 3

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 に null があることがわかります。

于 2013-03-27T14:05:06.613 に答える
0

1 人の顧客を追加した後、2 番目の顧客を求めています。配列のインデックスはゼロベースです。

于 2013-03-27T14:05:03.607 に答える
0

コードには 3 つの問題があります。

  • インデックスは 0 から始まります
  • ポストインクリメント演算子を使用して に値を代入していiます。asint i = noOfCustomers++;の値になります。つまり、インデックス 0 に顧客を追加し、インデックス 1 から取得しています。i0null
  • 銀行は使用する必要がありますArrayList
于 2013-03-27T14:12:48.857 に答える