0

次のコードがあります

class driver{
        static BankAccount GetAccount(Customer customer, char c) {
            BankAccount accSrc = customer.S;
            // savings account
            if (c =='S') {
                accSrc = customer.S;
            // loan account
            } else if (c =='L') {
                accSrc = customer.L;
            // checking account
            } else if (c =='C') {
                accSrc = customer.C;
            // auto loan account
            } else if (c =='A') {
                accSrc = customer.A;
            }
            return accSrc;
        }
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Customer forrest = new Customer("Forrest Gump", 1, "42 New Street, New York, New York"); // me
            Customer random = new Customer("Random Name", 2, "44 New Street, New York, New York"); // imaginary partner
            //try{
                String input = JOptionPane.showInputDialog("Please enter your transaction information: ");
                Scanner s = new Scanner(input);
                int id  = Integer.parseInt(s.next());
                char action = Character.toUpperCase((s.next().charAt(0)));
                char accSrc = ' ';
                char accDest = ' ';
                double amount = 0;

                if(action == 'T'){
                    amount = s.nextDouble();
                    accSrc = s.next().charAt(0);
                    accDest = s.next().charAt(0);
                }else if(action == 'G' || action == 'I'){
                    accSrc = s.next().charAt(0);
                }else{
                    //if D,W
                    amount = s.nextDouble();
                    accSrc = s.next().charAt(0);
                }

            //}catch (IOException e){

            //}
                if(id==1){
                    return forrest;
                }else if(id == 2){
                    return random;
                }
                BankAccount src = GetAccount(forrest,  accSrc);
                System.out.print(src.getOwner().name);
                if(action == 'T'){
                    BankAccount dst = GetAccount(forrest, accDest);
                    src.transfer(amount, dst);
.

    ..
    }

    class Customer{
        protected String name;
        protected int id;
        protected String address;
        protected BankAccount C = new BankAccount(id, this, 0);
        protected BankAccount S = new BankAccount(id, this, 0);
        protected BankAccount A = new BankAccount(id, this, 0);
        protected BankAccount L = new BankAccount(id, this, 0);
    ...
    }

現在、BankAccount をハードコーディングsrc = GetAccount(forrest, accSrc);して、ID 番号を指定して顧客のインスタンスを返すようにコードを作成するにはどうすればよいですか (たとえば、1 を指定すると forrest が返され、2 を指定するとランダムが返されます)。

4

3 に答える 3

3

クラスをMapegに入れます

 Map<Integer, Customer> classMap = new HashMap<Integer, Customer>();
 Customer forrest =
        new Customer("Forrest Stallings", 1, "42 New Street, New York, New York"); 
 classMap.put(1, forrest );

 Customer random = 
        new Customer("Random Name", 2, "44 New Street, New York, New York");
 classMap.put(2, random );

次に、クラスを次のように取得します。

Customer forrest= classMap.get(1); 
Customer random = classMap.get(2);
于 2012-11-09T21:15:02.103 に答える
0

さらに良い

Customer customers[] = { forrest, random };

インスタンスを呼び出すことができますcustomer[id]

于 2012-11-09T23:32:34.907 に答える
0

リストに自分のものを保存してから、そのインデックスでリスト項目を取得する必要があります。

于 2012-11-09T21:13:06.397 に答える