0

「顧客」という会社の顧客アカウントの配列を作成しています。getGasAccount配列内のアカウントの数をカウントするメソッドがあります。

プログラムクラスで変数を次のように宣言しました。

final int MAXACCOUNTS = 10;
int intNUmber, intSelectAccount;

以下を使用してアカウントを設定しました。

if (GasAccount.getGasAccount() < MAXACCOUNTS) {
   intSelectAccount = GasAccount.getBankAccount()++;
   customers[intSelectAccount] = new GasAccount();
}

コンストラクターが呼び出されたときに手動で入力されたアカウント番号で顧客を検索できるようにしたいと考えています。intSelectAcocunt/array 参照で検索したくありません。

というメソッドがある場合displayAccountDetails、アカウントを見つける別の方法はありますか?

customers[intSelectAccount].displayAccountDetails();
4

2 に答える 2

1

このようequalsにメソッドを実装しますGasAccount

public boolean equals(Object objToCompare){
    if (objToCompare != null){
        return objToCompare instanceof GasAccount && ((GasAccount)objToCompare).getAccountNumber() == getAccountNumber();
    }else{
        return false;
    }
}

GasAccount次に、配列内のオブジェクトの場所を見つけて、アカウントの詳細を表示します。

java.util.List<GasAccount> gasAccountsList = (java.util.List<GasAccount>)java.util.Arrays.asList(customers);
int objectIndex = gasAccountsList.indexOf([Gas Account Object]);
if (objectIndex != -1){
    gasAccountsList.get(objectIndex).displayAccountDetails();
}

jahroyが提案する、口座番号で検索するもう 1 つの簡単な方法は次のとおりです。

public void getAccountDetails(int accountNumber){
    java.util.List<GasAccount> gasAccountsList = (java.util.List<GasAccount>)java.util.Arrays.asList(customers);
    for(GasAccount gasAccountObj : gasAccountsList){
        if(gasAccountObj.getAccountNumber() == accountNumber){
            gasAccountObj.displayAccountDetails();
            break;
        }
    }
}

また

public void getAccountDetails(int accountNumber){
    for(GasAccount gasAccountObj : customers){
        if(gasAccountObj.getAccountNumber() == accountNumber){
            gasAccountObj.displayAccountDetails();
            break;
        }
    }
}
于 2013-03-25T18:12:20.970 に答える
0

必要なデータ構造はHashMapです。このようなことができます。

public class AccountClass{

    //You can fill in the details. I sounds like you know about constructors
    //getters, setters, etc.

    private HashMap<String, String> accountHash = new HashMap<String, String>();

    public HashMap<String, String> getHashMap()
    {
        return this.accountHash;
    }
}

口座番号で口座を調べたいときは、このようなことができます。

AccountClass acct = new AccountClass();
acct.getHashMap().get("1234");

アカウント番号「1234」のエントリを実際にマップに配置したと仮定すると、そのキーに関連付けられた値が返されます。

さらに読みたい場合は、ウィキペディアの記事をご覧ください

編集:いくつかのコメントに基づいて追加することがいくつかあります。

このように HashMap を static にした方が良いかもしれません

private static HashMap<String, String> accountHash = new HashMap<String, String>();

変数 static を宣言すると、HashMap にアクセスするためにオブジェクトをインスタンス化する必要がなくなります。このようなことができます。

AccountClass.accountHash.get(); 

または AccountClass.accountHash.put();

HashMap に何かを追加したい場合は、put メソッドを使用する必要があります。ここに例があります。

accountHash.put("1234","My test account"). 

これを使用すると、 accountHash.get("1234");// My test account が取得されます

「1234」キーに関連付けられた値を取得します。

この例は、使用方法についてのアイデアを提供するためのものであることを覚えておいてください。、 、またはその他の必要なもののマップを作成できます。

于 2013-03-25T18:35:01.330 に答える