我创建了一个名为“ACCOUNT_OPTION”的类,这个类有很多客户数组(名称,国家ID等)和很多方法(撤销,存款,贷款......等) 在称为“银行”的平均类 我在pic中创建了一个新对象:
public static void main(String[] args) {
// TODO code application logic here
int Selected ;
boolean again ;
ACCOUNT_OPTIONS CUSTOMER = new ACCOUNT_OPTIONS ();
do{
try {
Scanner input = new Scanner (System.in);
do {
again = true;
System.out.println("=================================");
System.out.println("====== Welcome To Our Bank =======");
System.out.println("Choose Your Choices ...");
System.out.println("1) Create A New Account ...");
System.out.println("2) Check Balance Amuont ...");
System.out.println("3) Deposit...");
System.out.println("4) Withdraw...");
System.out.println("5) Get a new loan ...");
System.out.println("6) Pay for the monthly payment for an existing loan...");
System.out.println("7) Check an existing loan status ...");
System.out.println("8) Print A Summry For Your Account...");
System.out.println("9) Exit");
System.out.print("Enter your choice : ");
Selected = input.nextInt();
System.out.println("=================================");
switch(Selected) {
case 1 :
CUSTOMER.newaccount();
break;
case 2:
CUSTOMER.opaccountCheck();
break;
case 3 :
CUSTOMER.opaccountDeposit();
break;
case 4 :
CUSTOMER.opaccountWithdraw();
break;
case 5 :
CUSTOMER.Loan();
break;
case 6 :
CUSTOMER.LoanPay();
break;
case 7 :
CUSTOMER.LoanCheck();
break;
case 8 :
System.out.println(CUSTOMER);
break;
case 9 :
System.out.println(".....THANKS FOR VISITING.....");
System.out.println("---------------------");
break;
default :
System.out.println(".....Invalid Choice.....");
System.out.println("---------------------");
}
}while(Selected!=9);
}
catch (Exception e){
System.out.println(".....Error!!.....");
System.out.println("Please Try Again");
System.out.println("Please Enter Only Number");
System.out.println("If You Want To Exit Press (9)");
System.out.println("---------------------");
again = false;
}
}while(!again);
// here we store the accounts in TreeSet
TreeSet<ACCOUNT_OPTIONS> Set = new TreeSet<>();
Set.add(CUSTOMER);
Iterator <ACCOUNT_OPTIONS> T = Set.iterator();
System.out.println("\n"+"Tree set data: ");
while (T.hasNext()){
System.out.println(T.next());
}
}
}
每件事都没问题,当我想要打印Treeset时,它只打印最后创建的帐户但是,我希望它能打印所有帐户我能做什么:(
答案 0 :(得分:0)
这是因为您只向TreeSet
添加了一个对象。
就目前而言,您在循环之前实例化CUSTOMER
对象,然后在循环的每次迭代中覆盖它,而不必将其添加到您的集合中。请注意,当您在循环后实例化TreeSet
时,您只需调用add( )
一次,因此您只需添加一个 object,它是循环的最后一次迭代创建的CUSTOMER
对象。
试试这个:
//BEFORE the loop
AccountOptions customer;
TreeSet<AccountOptions> accountOptionsSet= new TreeSet<>();
do {
//INSIDE the loop
customer = new Account_Options()
... rest of loop / instance-creation logic
accountOptionsSet.add(customer); //store the object before it gets overridden by the next.
...
} while(!again);
//AFTER the loop
System.out.println("\n"+"Tree set data: ");
Iterator <AccountOptions> accountOptionsIterator = accountOptionsSet.iterator();
while (accountOptionsIterator.hasNext()){
System.out.println(accountOptionsIterator.next());
}
(请注意,我对您的语法进行了一些更改,以符合Java naming conventions和meaningful-names最佳做法。虽然没有必要让您的代码有效,但您应该真正了解并遵循这些。 ,我建议的那些可能适合你的特定用例,也可能不适合你 - 我正在继续推断你发布的内容。事实上,我所做的一些改变仍然很糟糕 - 例如{ {1}}应该有一个在您的上下文中更有意义的名称。)
另外,在不知道你正在做什么的情况下,acctOptionsSet
令人困惑。问问自己:为什么没有一个AccountOptions customer
类,其中Customer
类的字段名为options
,或者AccountOptions
字段的Customer
类,有一个Account
字段?
当你正在学习编程时,你可能会想到制作难以理解的东西会让它变得聪明 - 它不会。 Occam's razor可能比编程更具适用性。