java - 需要后续帮助/建议 ---Java BankAccount 应用程序 - 在通过 switch 语句的情况下重用变量

标签 java variables switch-statement case

后续问题,需要案例 5 的帮助 - 使用此代码和 joptionpane 显示输出。我如何从 arraylist(database =db/deleted) 中调用对象以获得有意义的结果?我能够显示对象的引用。我正在阅读有关重载 tostring 方法的内容,但我不确定我的方向是否正确?任何帮助或建议表示赞赏!提前致谢。

附注顺便说一句,我应该在回答之前的问题后删除它们还是将它们留在黑板上?

    package bankaccount;

import javax.swing.JOptionPane;

public class BankAccountTest 
{
public static void main (String[] args)
{
    Database db = new Database();
    Database deleted = new Database();
    boolean done = false;
    while (!done)

    {
        int activity = IO.getInt("Please choose one of the following:"+
         "\n 1 to create new account"+ "\n 2 to delete an account"+
        "\n 3 to withdraw from an account"+"\n 4 to deposit to an account"+
         "\n 5 to list all customers"+"\n 6 to list all deleted customers"+
         "\n 7 to display single account "+"\n 8 to exit this program");

    switch(activity)
    {

  case 1:

  //Create new account
  String LastName = IO.getString("Please type last name: ");
  String FirstName = IO.getString("Please type first name: ");
  Name n = new Name (LastName,FirstName);

  //Create address object
  String street = IO.getString("Please type your address: ");
  String city = IO.getString("Please type your city: ");
  String state = IO.getString("Please type your state: ");
  String zipcode = IO.getString("Please type your zipcode: ");
  Address addr = new Address (street,city,state,zipcode);
/*        //Create Account number
  Random randomGenerator = new Random();
  int randomInt = randomGenerator.nextInt(2000000000);
  AccountNum accno = new AccountNum(randomInt);
*/     //Create customer object
  String accno = IO.getString("Please enter the account number: ");
  Customer c = new Customer(n,addr,accno);
        //Create bankaccount object 
 double amt = IO.getDouble("Please type the opening account balance: ");
  BankAccount b = new BankAccount(c, amt);
  db.add(b);
  break;


  case 2:

  // Delete an account / copy account info to deleted database
   String key = IO.getString("Enter account number to delete: ");
       db.search(key); 
     if (db.inlist())
  {
        deleted.add(db.remove(db.getindex()));
  } else 
  {
   //Display not found
    IO.notFound();
  }
  break;


  case 3:

  // withdraw from an account
    key = IO.getString("Enter account number to withdraw from: ");
    db.search(key);
   if (db.inlist())
  {
     double amount = IO.getDouble("Enter an amount to withdraw : ");
     b.withdraw(amount);
     JOptionPane.showMessageDialog(null, "Current balance is: "+b.balance);

  } else 
     {
         IO.notFound();
     }
  break;  

案例5:

  //Display single account
  if(db.list.isEmpty())
  { 
    String s = "The list is empty";
    JTextArea text = new JTextArea(s, 6, 20);
    JScrollPane pane = new JScrollPane(text); 
    JOptionPane.showMessageDialog(null, pane,
                "Current Customers", JOptionPane.INFORMATION_MESSAGE);
  }

  for (int i = 0; i < db.list.size(); i++)
  {
   // JOptionPane.showMessageDialog(null, " "+db.list.size());  
    String s = "These exists in the list: ";
    JTextArea text = new JTextArea(s, 6, 20);
    JScrollPane pane = new JScrollPane(text); 
    JOptionPane.showMessageDialog(null, pane,
                "Current Customers List", JOptionPane.INFORMATION_MESSAGE);
  }
  break;


  case 8:

  // exit program
      done=true;
      break;

 default:
 JOptionPane.showMessageDialog(null, "Invalid choice, please choose again ", 
                                "ERROR",JOptionPane.ERROR_MESSAGE);
    }
   }           
  }
  }

类(class)

package bankaccount;

public class BankAccount 
{
Customer cust;
double balance;

BankAccount (Customer c,double b)     
   {
        cust = c;
     balance = b;
   }

 void deposit (double amt)
   {
     balance = balance + amt;
   }

 void withdraw (double amt)
   {
     balance = balance - amt;
   }

 double getbalance ()
   {
    return balance;
   }

 Customer getcustomer ()
   {
    return cust;
   }
    }

&

package bankaccount;

public class Customer 
{
 Name name;
 Address addr;
 String accno;

 Customer (Name n, Address addy, String acc)
 {
     name = n;
     addr = addy;
     accno = acc;
 }

 Name getname()
 {
     return name;
 }

 Address getAddress()
 {
     return addr;
 }

 String getAccountNumber()
 {
     return accno;
 }

 void changeAccountNumber(String acc)
 {
     accno = acc;
 }
 }   

&

package bankaccount;

import java.util.ArrayList;

public class Database 
{
    int index;
    boolean found;
    ArrayList<BankAccount> list;
    BankAccount acc;

Database()
{
 list = new ArrayList<BankAccount>();
}

void add(BankAccount b)
{
   list.add(b);
}

BankAccount remove (int i)
{
    return list.remove(i);
}

 BankAccount getaccount()
{
    return acc;
}

ArrayList getlist()
{
    return list;
}

int getindex()
{
    return index;
}

boolean inlist()
{
    return found;
}

void search (String key)
{
    found = false;
    int i = 0;
    //int.length = list.size();

    while (i < list.size() && !found)
    { BankAccount b = list.get(i);
       if (key.equals(b.getcustomer().accno))
  {
  acc = b; found = true; index = i;
  }
else
  {
  i++;
  }
    }
}
}

&

package bankaccount;

public class Address 
{
 String street;
 String city;
 String state;
 String zipcode;     

  Address (String str, String cty, String st, String zip)
 {
     street = str;
     city = cty;
     state = st;
     zipcode = zip;
 }

 static String getstreet(String street)
 {
     return street;
 }

 public String getcity()
 {
     return city;
 } 

 public String getstate()
 {
     return state;
 }

 public String getzip()
 {
     return zipcode;
 }
}

最佳答案

您必须在 switch 子句之外定义变量,否则无法在情况 3 中定义该变量。

编辑

尝试以下操作:

db.getaccount().withdraw(amount);

而不是:

b.withdraw(amount);

通过这一行,您可以从数据库中获取帐户并在其中进行编辑。

关于java - 需要后续帮助/建议 ---Java BankAccount 应用程序 - 在通过 switch 语句的情况下重用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16822301/

相关文章:

Java transient 字段的序列化

java - 使用现有 ArrayList 的 HashSet 计算出的总数创建新集合

java - Android - 如何使用正则表达式检测纯文本中的网址?

python - 是什么导致了这个程序的错误

java - IntelliJ switch 语句使用字符串错误 : use -source 7

java - 这是Monster Builder的一个很好的Builder/Factory模式,用于抽象混合有setter的长构造函数吗?

java - 创建具有字符串格式的 Java 字符串变量

windows - 批处理脚本 : local variable from function1 to function2

javascript - If/Else/Switch 返回错误结果

r - Switch 语句不适用于数字对象