我现在BankLogic
完全疯了。我想要创建客户和储蓄帐户的三个类Customer
,SavingsAccount
和BankLogic
。
我有两种方法可行,addCustomer()
(我将客户添加到arraylist Customer
)和addSavingsAccount()
(我将储蓄帐户添加到具有特定pNr
的客户)。我的问题是我不知道如何从两个必须联系在一起的arraylists中打印出东西。我该怎么做?
如果我只有info = customer.toString()
,此方法就可以了。如何向accountId
获得正确的pNr
?我知道我无法从SavingsAccount
获取它,它会生成一个新号码。但我该怎么办?
BankLogic类
import java.util.ArrayList;
import java.util.Scanner;
public class BankLogic
{
private double amount;
private double balance;
private ArrayList<Customer> customerlist;
private ArrayList<SavingsAccount> accounts;
Scanner in = new Scanner(System.in);
public BankLogic()
{
customerlist = new ArrayList<Customer>();
accounts = new ArrayList<SavingsAccount>();
}
public String infoBank()
{
String customers = customerlist.toString();
return customers.substring(1, customers.length() - 1);
}
public boolean addCustomer(String name, long pNr)
{
boolean add = true;
for(int i = 0; i < customerlist.size(); i++)
{
if (customerlist.get(i).getPCode() == pNr)
{
add = false;
}
}
if(add)
{
customerlist.add(new Customer(name, pNr));
add = true;
}
return add;
}
public String infoCustomer(long pNr){
String info = "";
for (Customer customer : customerlist)
{
if (customer.getPCode() == pNr)
{
info = customer.toString() + "\tKontonr: " + findAccount(pNr);
}
}
return info;
}
public String findAccount(long pNr){
for(SavingsAccount account : accounts)
{
if (account.getPCode() == pNr)
{
return "account found";
}
}
return "Nothing found";
}
public boolean changeCustomerName(String name, long pNr){
boolean result = false;
for(int i = 0; i < customerlist.size(); i++)
{
if (customerlist.get(i).getPCode() == pNr)
{
Customer customer = customerlist.get(i);
customer.setName(name);
customerlist.set(i, customer);
result = true;
}
}
return result;
}
public String removeCustomer(long pNr){
for (int i = 0; i < customerlist.size(); i++)
{
Customer customer = customerlist.get(i);
if (customer.getPCode() == pNr)
{
customer = customerlist.remove(i);
}
else
i++;
}
return "Removeinfo: ";
}
public int addSavingsAccount(long pNr){
/*
for(int i = 0; i < customerlist.size(); i++)
{
accounts.add(new SavingsAccount());
}
return SavingsAccount.getAccountId();
*/
int add = 0;
for(int i = 0; i < customerlist.size(); i++)
{
if (customerlist.get(i).getPCode() == pNr)
{
accounts.add(new SavingsAccount());
}
else
{
return -1;
}
}
return add;
}
public String infoAccount(long pNr, int accountId)
{
String info = "";
for(Customer customer : customerlist)
{
if(pNr == customer.getPCode())
{
for(SavingsAccount account : accounts)
{
if(accountId == account.getAccountId())
{
info = "Personnummer: " + pNr + "\nKontonummer: " + accountId
+ "\nSaldo: " + amount + "\nRänta: " + SavingsAccount.RATE;
}
}
}
}
return info;
}
public boolean deposit(long pNr, int accountId, double amount)
{
for(Customer customer : customerlist)
{
for (SavingsAccount account : accounts)
{
if(accountId == account.getAccountId() && pNr == customer.getPCode())
{
balance += amount;
return true;
}
}
}
return false;
}
public boolean withdraw(long pNr, int accountId, double amount){
for(Customer customer : customerlist)
{
if(pNr == customer.getPCode())
{
for(SavingsAccount account : accounts)
{
if(accountId == account.getAccountId())
{
balance -= amount;
return true;
}
}
return false;
}
}
return false;
}
//stänger ett konto och returnerar saldo och ränta
public String closeAccount(long pNr, int accountId){
if(customerlist.size() > accountId)
{
balance = SavingsAccount.getBalance();
customerlist.remove(accountId);
}
return "Saldo: " + balance + "\nRänta: " + SavingsAccount.getIntRate();
}
}
SavingsAccount类
public class SavingsAccount
{
private static double balance;
private static String accounttype = "Sparkonto";
private static int accountId = 1001;
public static final double RATE = 2.0;
private long pNr;
//----------------------------------------------------------------------
// Beskrivning: hämtar kundens personnummer
// Inparametrar:
// Returvärde: long returnerar personnummer
//----------------------------------------------------------------------
public long getPCode(){
return pNr;
}
//----------------------------------------------------------------------
// Beskrivning: hämtar saldo
// Inparametrar:
// Returvärde: double returnerar saldo
//----------------------------------------------------------------------
public static double getBalance(){
return balance;
}
//----------------------------------------------------------------------
// Beskrivning: hämtar kontotyp
// Inparametrar:
// Returvärde: String returnerar kontotyp
//----------------------------------------------------------------------
public static String getAccountType(){
return accounttype;
}
//----------------------------------------------------------------------
// Beskrivning: hämtar kontonummer
// Inparametrar:
// Returvärde: int returnerar kontonummer
//----------------------------------------------------------------------
public static int getAccountId(){
return accountId++;
}
//----------------------------------------------------------------------
// Beskrivning: hämtar ränta
// Inparametrar:
// Returvärde: double returnerar räntesatsen
//----------------------------------------------------------------------
public static double getIntRate(){
return RATE;
}
//----------------------------------------------------------------------
// Beskrivning: beräknar ränta per år
// Inparametrar:
// Returvärde: double returnerar saldot inkl. årsräntan i kronor
//----------------------------------------------------------------------
public static double calculateIntRate(){
return balance += (balance * RATE) / 100;
}
//----------------------------------------------------------------------
// Beskrivning: utför transaktioner; insättning / uttag, och lämnar
// meddelande om kontot understiger 0
// (Här fick jag hjälp från en föreläsning från Chalmers.
// http://www.cse.chalmers.se/edu/year/2009/course/TDA143/Lectures/F5.pdf)
// Inparametrar: double amount
// Returvärde: double returnerar nytt saldo om det finns täckning på konto
//----------------------------------------------------------------------
public double transaction(double amount){
if(amount < 0 && balance + amount < 0)
return -0;
else
return balance += amount;
}
//----------------------------------------------------------------------
// Beskrivning: variablerna blir utskrivbara
// Inparametrar:
// Returvärde: String returnerar kontonummer, kontotyp, saldo och ränta
//----------------------------------------------------------------------
public String toString(){
String infoAccount = "Kontonr: " + accountId + "\nKontotyp: " + accounttype +
"\nSaldo: " + balance + "\tRäntesats: " + RATE;
return infoAccount;
}
}
客户类:
public class Customer
{
private String name;
private long pNr;
//----------------------------------------------------------------------
// Beskrivning: konstruktor
//----------------------------------------------------------------------
public Customer(String cName, long pCode)
{
name = cName;
pNr = pCode;
}
//----------------------------------------------------------------------
// Beskrivning: hämtar kundens namn
// Inparametrar:
// Returvärde: String returnerar namn
//----------------------------------------------------------------------
public String getName(){
return name;
}
//----------------------------------------------------------------------
// Beskrivning: hämtar kundens personnummer
// Inparametrar:
// Returvärde: long returnerar personnummer
//----------------------------------------------------------------------
public long getPCode(){
return pNr;
}
//----------------------------------------------------------------------
// Beskrivning: ändrar en kunds namn
// Inparametrar: String newName - nytt namn genereras
// Returvärde: String returnerar kundens nya namn
//----------------------------------------------------------------------
public void setName(String newName){
name = newName;
}
//----------------------------------------------------------------------
// Beskrivning: skriver ut all info om kunden
// Inparametrar:
// Returvärde: String returnerar personnummer och namn
//----------------------------------------------------------------------
public String toString(){
return "\nPersonnummer: " + pNr + "\tNamn: " + name;
}
}
答案 0 :(得分:0)
您的SavingsAccount类需要一个accountId作为由构造函数分配的实例变量。将您当前的静态accountId更改为nextAccountId。您可能不希望余额保持静态,因为每个帐户都需要自己的价值。
public class SavingsAccount()
{
private static int nextAccountId = 1001;
private int accountId;
private double balance = 0.0;
private int getNextAccountId()
{
return nextAccountId++;
}
public SavingsAccount()
{
accountId = getNextAccountId();
}
public int getAccountId()
{
return accountId();
}
public double getBalance()
{
return balance;
}
}
答案 1 :(得分:0)
SavingsAccount
public class SavingsAccount
{
private static double balance;
private static String accounttype = "Sparkonto";
private static int accountId = 1001;
public static final double RATE = 2.0;
private long pNr;
//----------------------------------------------------------------------
// Beskrivning: hämtar kundens personnummer
// Inparametrar:
// Returvärde: long returnerar personnummer
//----------------------------------------------------------------------
public long getPCode(){
return pNr;
}
//----------------------------------------------------------------------
// Beskrivning: hämtar saldo
// Inparametrar:
// Returvärde: double returnerar saldo
//----------------------------------------------------------------------
public static double getBalance(){
return balance;
}
//----------------------------------------------------------------------
// Beskrivning: hämtar kontotyp
// Inparametrar:
// Returvärde: String returnerar kontotyp
//----------------------------------------------------------------------
public static String getAccountType(){
return accounttype;
}
//----------------------------------------------------------------------
// Beskrivning: hämtar kontonummer
// Inparametrar:
// Returvärde: int returnerar kontonummer
//----------------------------------------------------------------------
public static int getAccountId(){
return accountId++;
}
//----------------------------------------------------------------------
// Beskrivning: hämtar ränta
// Inparametrar:
// Returvärde: double returnerar räntesatsen
//----------------------------------------------------------------------
public static double getIntRate(){
return RATE;
}
//----------------------------------------------------------------------
// Beskrivning: beräknar ränta per år
// Inparametrar:
// Returvärde: double returnerar saldot inkl. årsräntan i kronor
//----------------------------------------------------------------------
public static double calculateIntRate(){
return balance += (balance * RATE) / 100;
}
//----------------------------------------------------------------------
// Beskrivning: utför transaktioner; insättning / uttag, och lämnar
// meddelande om kontot understiger 0
// (Här fick jag hjälp från en föreläsning från Chalmers.
// http://www.cse.chalmers.se/edu/year/2009/course/TDA143/Lectures/F5.pdf)
// Inparametrar: double amount
// Returvärde: double returnerar nytt saldo om det finns täckning på konto
//----------------------------------------------------------------------
public double transaction(double amount){
if(amount < 0 && balance + amount < 0)
return -0;
else
return balance += amount;
}
//----------------------------------------------------------------------
// Beskrivning: variablerna blir utskrivbara
// Inparametrar:
// Returvärde: String returnerar kontonummer, kontotyp, saldo och ränta
//----------------------------------------------------------------------
public String toString(){
String infoAccount = "Kontonr: " + accountId + "\nKontotyp: " + accounttype +
"\nSaldo: " + balance + "\tRäntesats: " + RATE;
return infoAccount;
}
}
循环结果
public String infoCustomer(long pNr){
String info = "";
for (Customer customer : customerlist)
{
if (customer.getPCode() == pNr)
{
info = customer.toString() + "\tKontonr: " + findAccount(pNr);
}
}
return info;
}
public String findAccount(long pNr){
for(SavingsAccount account in accounts)
{
if (account.getPCode() == pNr)
{
return "account found";
}
}
return "Nothing found";
}