1
我需要打印出我的ArrayList
的內容,但它不能正確打印。更具體地說,getAccountSaldo
在CustomerRegister
中沒有返回正確的值(如果我想打印出例如不同的帳戶)。方法不能正確打印ArrayList內容
這裏是我的代碼:
類賬戶
public class Account {
private Customer customer;
private String nbr;
private double saldo;
public void setNbr(String nbr){
this.nbr = nbr;
}
public String getNbr(){
return nbr;
}
public void setSaldo(double saldo){
this.saldo = saldo;
}
public double getSaldo(){
return saldo;
}
public void setCustomer(Customer customer){
this.customer = customer;
}
public Customer getCustomer(){
return customer;
}
public void withdraw(double amount){
saldo -= amount;
}
public void deposit(double amount){
saldo += amount;
}
}
類客戶
public class Customer {
private String nbr;
private String namn;
private ArrayList<Account> accounts = new ArrayList<Account>();
public void setNbr(String nbr){
this.nbr = nbr;
}
public String getNbr(){
return nbr;
}
public void setNamn(String namn){
this.namn = namn;
}
public String getNamn(){
return namn;
}
public void setAccounts(ArrayList<Account> accounts){
this.accounts = accounts;
}
public ArrayList<Account> getAccounts(){
return accounts;
}
public void add(Account account){
accounts.add(account);
}
public Account find(String nbr){
for(Account a : accounts){
if(nbr == a.getNbr()){
return a;
}
}
return null;
}
}
類CustomerRegister
public class CustomerRegister {
private ArrayList<Customer> customers = new ArrayList<Customer>();
public void setCustomers(ArrayList<Customer> customers){
this.customers = customers;
}
public ArrayList<Customer> getCustomers(){
return customers;
}
public void add(Customer k){
customers.add(k);
}
public Customer find(String nr){
for (Customer b : customers){
if (nr == b.getNbr()){
return b;
}
}
return null;
}
public ArrayList<Account> printAccounts(String customerNbr){
Customer l = find(customerNbr);
if (l != null){
return l.getAccounts();
}
return null;
}
// CAN'T SOLVE THIS
public Double getAccountSaldo(String customerNbr, String accountNbr) {
double balance = 0;
Customer custNbr = find(customerNbr);
// Shouldn't it be "Account acctNbr = find(accountNbr);" here?
// Problem is I can't access that method in this class...
if(custNbr != null){
for (Account x : printAccounts(customerNbr)) {
if (accountNbr == x.getNbr()) {
balance += x.getSaldo();
}
return balance;
}
}
return null;
}
}
類演示:
public class Demo {
public static void main(String[] args){
CustomerRegister r1 = new CustomerRegister();
ArrayList<Account> listOfAccounts = new ArrayList<Account>();
ArrayList<Customer> listOfCustomers = new ArrayList<Customer>();
Customer c = new Customer();
c.setNbr("1");
c.setNamn("Adam Schinn");
Account a = new Account();
a.setNbr("Konto 1");
a.setSaldo(2200);
a.setCustomer(c);
Account b = new Account();
b.setNbr("Konto 2");
b.setSaldo(2000);
b.setCustomer(c);
listOfCustomers.add(c);
listOfAccounts.add(a);
listOfAccounts.add(b);
c.setAccounts(listOfAccounts);
r1.add(c);
r1.setCustomers(listOfCustomers);
for(Account temp : r1.printAccounts("1")){
System.out.println(temp.getNbr() + " Balance: " + temp.getSaldo() + "kr ");
}
for(Customer temp : r1.getCustomers()){
System.out.println("Nr: " + temp.getNbr() + " Namn: " + temp.getNamn());
}
// CAN'T SOLVE THIS
// If I write "Konto 2" instead of "Konto 1" it prints "0.0"
System.out.println(r1.getAccountSaldo("1", "Konto 1"));
}
}
打印出來
Konto 1 Balance: 2200.0kr
Konto 2 Balance: 2000.0kr
Nr: 1 Namn: Adam Schinn
2200.0
你有任何建議我的代碼(特別是示範類)的改進?詳細說明:任何我不需要在demo類中創建列表並簡單地使用add方法的方法? (我是全新的,只是學習ArrayLists) – purpleman
只有一個建議,你的類仍然有錯誤的字符串比較,只是做正確的,你的應用程序將按需要工作。如果你想玩更多,然後改變你的演示課,從用戶採取一些輸入,然後相應地進行。 –