2015-11-18 8 views
-1

Это раздел моего кода, я не могу понять, как создать новый объект транзакции со значениями, полученными из файла. Полужирный раздел кода - это часть, которую я не могу обойти, спасибо.Создайте новый экземпляр объекта и сохраните его в массиве

import java.io.BufferedReader; 
import java.io.FileReader; 
import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

public class Account 
{ 
// the customer 
Customer customer; 

// the account number 
private String accountNumber; 

// the account balance 
private double balance; 

// the account transactions 
private Transaction transactions[]; 

// the number of account transactions 
private int numberOfTransactions; 

// constants 
private static final int MAX_TRANSACTIONS = 10; 
String FILENAME = "transactions.txt"; 


public Account(Customer customer, String accountNumber) 
{ 
    this.customer = customer; 
    this.accountNumber = accountNumber; 
    balance = 0.0f; 
    transactions = new Transaction[MAX_TRANSACTIONS]; 
    numberOfTransactions = 0; 
} 

public void readTransactions() { 
    BufferedReader br = null; 
    try { 
     br = new BufferedReader(new FileReader(FILENAME)); 
     String line = null; 
     int count=0; 

     while ((line = br.readLine()) != null && count < MAX_TRANSACTIONS) { 
      String[] values = line.split(","); 

      double amount = Double.parseDouble(values[0]); // amount will be used in constructor of new Transaction 
      String type = values[1]; // type will be used in constructor of new Transaction 
      String reference = values[2]; // reference will be used in constructor of new Transaction 

      String inputDate = "12/9/2003"; 
      SimpleDateFormat formatter = new SimpleDateFormat("d/M/yyyy"); 
      Date date = null; 
      try { 
       date = formatter.parse(values[3]); // date will be used in constructor of new Transaction 
      } 
      catch (ParseException exc) 
      { 
       System.out.println("A date format error occurred"); 
      } 

      **for (int i= 0; i<MAX_TRANSACTIONS;i++) 
      { 
       transactions[i] = new Transaction (amount,type,reference,date); 
      }** 



      count++; 
     } 
     br.close(); 

     numberOfTransactions = count; 

     System.out.println("Transactions read from file successfully"); 

     updateBalance(); // calculates and updates the account balance 
    } 
    catch (Exception ex) { 
     System.out.println("A file error occurred"); 
    } 
} 
+1

Что случилось с тем, что у вас есть? –

+0

Почему вы инициализируете массив внутри цикла? Таким образом, каждый новый массив инициализируется при каждом повторе. Вы должны инициализировать массив 'Transaction [] transaction = new Transaction [MAX_TRANSACTIONS];' перед циклом 'while' –

+0

. Вы ничего не делаете с массивом, кроме создания его и добавления к нему элементов. Чего вы пытаетесь достичь? Что вы ожидаете, и что происходит вместо этого? –

ответ

0

Я думаю, что вы создаете транзакцию obejct строго определенным образом. Однако я думаю, что вам нужно вывести эту строку из цикла while.

Transaction[] transactions = new Transaction [MAX_TRANSACTIONS]; 
+0

спасибо за ответы/комментарии, у меня есть строка выше в начале, а я просто забыл и поместил ее в цикл. файл FILENAME имеет 3 строки значений для типа, ссылки, количества и даты ... но когда метод выполняется, он все еще отображает объекты в массиве как null? Я просто знаком с java, поэтому мне жаль, что я не правильно формулирую и не объясняю что-либо правильно. –

+0

Можете ли вы обновить вопрос с помощью текущего кода? и где вы получаете нулевое значение – reos

+0

Я думаю, что я сделал это сейчас, я получаю нулевые значения, когда я проверяю объект своей учетной записи, транзакции должны ссылаться на вновь созданные транзакции? если это имеет смысл –

Смежные вопросы