我如何更改此ATM代码以使其 import java.util.Scanner; 导入userAccountInformation.csv; 公共类ATM机{ 私人双可用平衡; 私人双重平衡; 扫描仪输入=新扫描仪(System.in); 公共int用户帐户(){ 系统输出打印(“请输入您的账号:”); 国际账户; account=input.nextInt(); 验证输入(); 返回帐户; } 公共int userPin(){ System.out.print(“请输入您的pin码:”); int引脚; pin=input.nextInt(); 验证输入(); 回位销; } 公共无效STARTAM(){ 用户帐户(); userPin(); DrawMain菜单(); } 公共菜单(){ int选择; System.out.println(“\nATM主菜单:”); System.out.println(“1-查看账户余额”); System.out.println(“2-提取资金”); System.out.println(“3-添加资金”); System.out.println(“4-终止交易”); 系统输出打印(“选择:”); selection=input.nextInt(); 开关(选择){ 案例1: viewAccountInfo(); 打破 案例2: 撤回(); 打破 案例3: 增加资金(); 打破 案例4: System.out.println(“感谢您使用这个ATM!!!再见”); } } public void viewcountinfo(){ System.out.println(“账户信息:”); System.out.println(“\t--总余额:$”+总余额); System.out.println(“\t--可用余额:$”+可用余额); DrawMain菜单(); } 公共作废保证金(金额){ System.out.println(“\n***请立即插入您的钱…***”); 总余额=总余额+折旧金额; availableBalance=availableBalance+depAmount; } 公共无效支票不足资金(整数取款金额){ if(总余额-提款金额

我如何更改此ATM代码以使其 import java.util.Scanner; 导入userAccountInformation.csv; 公共类ATM机{ 私人双可用平衡; 私人双重平衡; 扫描仪输入=新扫描仪(System.in); 公共int用户帐户(){ 系统输出打印(“请输入您的账号:”); 国际账户; account=input.nextInt(); 验证输入(); 返回帐户; } 公共int userPin(){ System.out.print(“请输入您的pin码:”); int引脚; pin=input.nextInt(); 验证输入(); 回位销; } 公共无效STARTAM(){ 用户帐户(); userPin(); DrawMain菜单(); } 公共菜单(){ int选择; System.out.println(“\nATM主菜单:”); System.out.println(“1-查看账户余额”); System.out.println(“2-提取资金”); System.out.println(“3-添加资金”); System.out.println(“4-终止交易”); 系统输出打印(“选择:”); selection=input.nextInt(); 开关(选择){ 案例1: viewAccountInfo(); 打破 案例2: 撤回(); 打破 案例3: 增加资金(); 打破 案例4: System.out.println(“感谢您使用这个ATM!!!再见”); } } public void viewcountinfo(){ System.out.println(“账户信息:”); System.out.println(“\t--总余额:$”+总余额); System.out.println(“\t--可用余额:$”+可用余额); DrawMain菜单(); } 公共作废保证金(金额){ System.out.println(“\n***请立即插入您的钱…***”); 总余额=总余额+折旧金额; availableBalance=availableBalance+depAmount; } 公共无效支票不足资金(整数取款金额){ if(总余额-提款金额,java,Java,但是,有人能帮我编写validateInput()方法,以便: 1.检查帐号和密码,并根据用户的文本文件进行验证。允许三次尝试 并帮助我更改它,以便: 如果存放多张支票,请将值保存在数组中,然后更新文本文件 存款、转账和取款修改文本文件 如果用户不是您银行的客户,任何提款都要额外收取2.00美元 根据文本文件检查余额 *我遇到问题的地方:*将文本文件合并到代码中,以便我可以对照它进行检查,并在需要时进行更新/编写validateInput()方法 我假设这将需要大量工作,因此非常感谢您的帮助……

但是,有人能帮我编写validateInput()方法,以便: 1.检查帐号和密码,并根据用户的文本文件进行验证。允许三次尝试

并帮助我更改它,以便:

  • 如果存放多张支票,请将值保存在数组中,然后更新文本文件
  • 存款、转账和取款修改文本文件
  • 如果用户不是您银行的客户,任何提款都要额外收取2.00美元
  • 根据文本文件检查余额
  • *我遇到问题的地方:*将文本文件合并到代码中,以便我可以对照它进行检查,并在需要时进行更新/编写validateInput()方法


    我假设这将需要大量工作,因此非常感谢您的帮助……

    将文件读入Java有很多方法。我更喜欢使用以下方法:

    读取文件:

    import java.util.Scanner;
    import userAccountInformation.csv;
    
    public class AtmMachine {
    
     private double availableBalance;
     private double totalBalance;
     Scanner input = new Scanner(System.in);
    
     public int userAccount() {
      System.out.print("Please enter your account number: ");
      int account;
      account = input.nextInt();
      validateInput();
      return account;
     }
    
     public int userPin() {
      System.out.print("Please enter your pin number: ");
      int pin;
      pin =input.nextInt();
      validateInput();
      return pin;
     }
    
    public void startAtm() {
     userAccount();
     userPin();
     drawMainMenu();
    }
    
    public void drawMainMenu() {
     int selection;
    
     System.out.println("\nATM main menu:");
     System.out.println("1 - View account balance");
     System.out.println("2 - Withdraw funds");
     System.out.println("3 - Add funds");
     System.out.println("4 - Terminate transaction");
     System.out.print("Choice: ");
     selection =input.nextInt();
    
     switch(selection) {
    
     case 1:
     viewAccountInfo();
     break;
     case 2:
     withdraw();
     break;
     case 3:
     addFunds();
     break;
     case 4:
     System.out.println("Thank you for using this ATM!!! goodbye");
     }
    }
    
    public void viewAccountInfo() {
     System.out.println("Account Information:");
     System.out.println("\t--Total balance: $"+totalBalance);
     System.out.println("\t--Available balance: $"+availableBalance);
     drawMainMenu();
    }
    
    public void deposit(int depAmount) {
     System.out.println("\n***Please insert your money now...***");
     totalBalance =totalBalance +depAmount;
     availableBalance =availableBalance +depAmount;
    }
    
    public void checkNotSufficientFunds(int withdrawAmount) {
     if(totalBalance -withdrawAmount < 0)
     System.out.println("\n***ERROR!!! Insufficient funds in you accout***");
     else {
      totalBalance =totalBalance -withdrawAmount;
      availableBalance =availableBalance -withdrawAmount;
      System.out.println("\n***Please take your money now...***");
     }
    }
    
    public void addFunds() {
    
     int addSelection;
    
     System.out.println("Deposit funds:");
     System.out.println("1 - $20");
     System.out.println("2 - $40");
     System.out.println("3 - $60");
     System.out.println("4 - $100");
     System.out.println("5 - Back to main menu");
     System.out.print("Choice: ");
     addSelection =input.nextInt();
    
     switch(addSelection) {
    
     case 1:
     deposit(20);
     drawMainMenu();
     break;
     case 2:
     deposit(40);
     drawMainMenu();
     break;
     case 3:
     deposit(60);
     drawMainMenu();
     break;
     case 4:
     deposit(100);
     drawMainMenu();
     break;
     case 5:
     drawMainMenu();
     break;
     }
    }
    
    public void withdraw() {
    
     int withdrawSelection;
    
     System.out.println("Withdraw money:");
     System.out.println("1 - $20");
     System.out.println("2 - $40");
     System.out.println("3 - $60");
     System.out.println("4 - $100");
     System.out.println("5 - Back to main menu");
     System.out.print("Choice: ");
     withdrawSelection =input.nextInt();
    
     switch(withdrawSelection) {
     case 1:
     checkNotSufficientFunds(20);
     drawMainMenu();
     break;
     case 2:
     checkNotSufficientFunds(40);
     drawMainMenu();
     break;
     case 3:
     checkNotSufficientFunds(60);
     drawMainMenu();
     break;
     case 4:
     checkNotSufficientFunds(100);
     drawMainMenu();
     break;
     case 5:
     drawMainMenu();
     break;
     }
    }
    
    public static void main(String args[]) {
    
     AtmMachine myAtm = new AtmMachine();
     myAtm.startAtm();
     }
    }
    
    validateInput() {
    
    }
    
    ArrayList accounts=new ArrayList();
    试一试{
    StringBuilder sb=新的StringBuilder();
    BufferedReader br=新的BufferedReader(新文件读取器(“C:\\readFile.txt”);
    弦线;
    而((line=br.readLine())!=null){
    账户。添加(新账户(行));
    } 
    }catch(filenotfounde异常){
    e、 printStackTrace();
    }捕获(IOE异常){
    e、 printStackTrace();
    }最后{
    如果(br!=null){
    试一试{
    br.close();
    }捕获(例外情况除外){
    e、 printStackTrace();
    }
    }
    }
    
    您必须确定一种格式,然后使用标记器或其他解析器从已读入的字符串中提取信息。我建议您在项目中设置类(例如Account类-属性:AccountNumber、Pin、Balance等)。请记住添加一个Account(String)构造函数和一个toString()方法,以便轻松地从字符串创建帐户,并将帐户转换为字符串以存储在文本文件中

    要将帐户写回您的文件(在每笔交易结束时或程序关闭时,由您选择),请执行以下操作:

    BufferedWriter BufferedWriter=null

    ArrayList<Account> accounts = new ArrayList<Account>();
    try {
        StringBuilder sb = new StringBuilder();
        BufferedReader br = new BufferedReader(new FileReader("C:\\readFile.txt"));
        String line;
        while ((line = br.readLine()) != null) {
            accounts.Add(new Account(line));
        } 
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    } finally {
      if (br != null) {
        try {
          br.close();
        } catch (Exception ex) {
          e.printStackTrace();
        }
      }
    }
    
    试试看{
    //构造BufferedWriter对象
    bw=新的缓冲写入程序(新的文件写入程序(文件名));
    //开始写入输出流
    
    对于(int i=0;i…作业?如果是,请添加家庭作业标签。是你在2007年8月2日发布了相同的代码吗?:)我没有在javacodee.blogspot.com/2007/08/atm.htmlNo问题上发布代码。如果我的答案有帮助(或没有)请不要忘记对答案进行投票。在finally子句中有两个小注释。1:对于读者来说没有flush方法。2:对于通过API contract close()编写的编写器,意味着flush()(尽管额外的调用实际上不会伤害任何东西)。抱歉,从内存中编写这些内容,因此没有int
        try {
            //Construct the BufferedWriter object
            bw = new BufferedWriter(new FileWriter(filename));
    
            //Start writing to the output stream
            for (int i=0; i<accounts.size(); i++) {
              bw.write(accounts.get(i).toString());
              bw.newLine();
            }
        } catch (FileNotFoundException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
            //Close the BufferedWriter
            try {
                if (bw!= null) {
                    bw.close();
                }
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }