次のコードがあります
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 を指定するとランダムが返されます)。