以不同方式从文件加载信息

时间:2015-09-29 23:11:08

标签: java class file-io methods

我的程序目前正在运行:

        Bank bank = new Bank();

        bank.openAccount(new CheckingAccount(10100, new Customer("First", "Last"),500.00,false));
        bank.openAccount(new CheckingAccount(10101, new Customer("First", "Last"),2000.00,true));
        bank.openAccount(new SavingsAccount(2010, new Customer("First", "Last"),5000.00,0.02));

现在我正在尝试从文件中加载此信息,但我遇到了一些问题。我希望新的客户信息包括作为单独变量存储在不同索引位置的名字和姓氏,但是这样可以工作:

        new Customer[FIRST_INDEX], 

我似乎无法在不再创建新客户的情况下接受两个索引位置。这转而导致帐户中的方法出现问题,我希望保持相同的格式。我怎么能这样做呢?

    public CheckingAccount(int accountNumber, Customer owner, double currentBalance, boolean freeChecks) 
{
    super(accountNumber, owner, currentBalance);
    this.freeChecks = freeChecks;
}

我遇到的另一个问题是,最后一个索引位置可能是两个变量之一,具体取决于我是在处理支票账户还是储蓄账户:

private final static int FREE_CHECKS_INDEX = 4; // This loads a boolean
private final static int INTEREST_INDEX = 4;    // This loads a double

鉴于此,我不完全确定我的上述方法是否会起作用。该程序应该加载一个支票帐户或储蓄帐户对象,但由于两种类型的帐户都存储在同一个文件中,我想知道在创建对象之前是否可以读取文本文件每行的最后一个索引位置,但我真的不确定该怎么做。

要清楚,我在没有从文件加载数据的情况下完美地运行此问题,我只是不确定调整它的最佳方法,而不必重写所有其他类。这是我想要做的新事物,我知道这是不对的:

    protected static void loadAccountInformationFromFile() throws Exception 
    {
        try ( Scanner fin = new Scanner(new File(INPUT_CUSTOMER_FILE)) ) 
            {
                String record;
                String[] fields;


                while ( fin.hasNext() ) 
                    {
                        record = fin.nextLine();

                        fields = record.split(",");

                        Bank bank = new Bank();

                        bank.openAccount
                            (
                                new CheckingAccount(Integer.parseInt(accountNumber[ACCOUNT_NUMBER_INDEX]), 
                                new Customer[FIRST_INDEX, LAST_INDEX], 
                                currentBalance[BALANCE_INDEX], 
                                freeChecks[FREE_CHECKS_INDEX]
                                )
                            );
                    }
            } catch (Exception e) 
                {
                    throw e;    
                } // end try
        } 

0 个答案:

没有答案