2013-03-12 79 views
-2
public class ReaderWriter extends Bank { 

private final String FILENAME = "clients.txt"; 

public void writeToFile() { 
    int i = 0; 
    boolean repeat = true; 
    Formatter output = null; // Used to write to file 

    try { 
     output = new Formatter(FILENAME); 
     // Open the file 

     while ((i <= accounts.length - 1) && (accounts[i] != null)) { 
      output.format("%s\n", accounts[i].getAccountHolder());  
      output.format("%d%n", accounts[i].getAccountNumber()); 
      output.format("%d%n", accounts[i].getAmount()); 
      i = i + 1; 
     }catch (Exception ex) { 

     ex.printStackTrace(); 
    } finally { 
     output.close();     // Make sure to close the resource after usage. 
    } 
} 

這是Bank類:寫入數據從對象數組文本文件的Java

public class Bank { 

public final int MAX_NUMBER_OF_ACCOUNTS = 10; 
public int max = 0; 

String name1; 
int money1; 
int number1; 

Scanner input = new Scanner(System.in); 
BankAccount[] accounts = new BankAccount[MAX_NUMBER_OF_ACCOUNTS]; 
public void greateAccount() { 
    int i = 0; 
    boolean repeate2 = true; 
    System.out.println("You have chosen to create a new account."); 
    System.out.println("Enter the name of the account holder: "); 
    name1 = input.next(); 

    System.out.println("Enter the account no."); 
    number1 = input.nextInt(); 

    System.out.println("Enter the initiating amount: "); 
    money1 = input.nextInt(); 

    while (repeate2 == true) { 
     if (accounts[i] == null) { 
      if (i < 1) { 
       accounts[i] = new BankAccount(); 
       accounts[i].setAccountHolder(name1); 
       accounts[i].setAccountNumber(number1); 
       accounts[i].setAmount(money1); 
       repeate2 = false; 
      } else { 
       if (ifAccountExist(number1) != true) { 
        accounts[i] = new BankAccount(); 
        accounts[i].setAccountHolder(name1); 
        accounts[i].setAccountNumber(number1); 
        accounts[i].setAmount(money1); 
        repeate2 = false; 
       } else { 
        System.out.println("****This account ALREADY EXIST!****"); 
        System.out.println("*************************************"); 
        System.out.println(); 
        max = max - 1; 
        repeate2 = false; 
       } 
      } 
     } 
     i = i + 1; 
    } 
    max++; 
} 

現在我想要寫文本文件的帳號,姓名和金錢。 我的代碼不起作用。我不寫它無法從數組中檢索值我不知道爲什麼? 你能幫我嗎?

+0

我不能編譯你的代碼.. – 2013-03-12 00:26:50

+0

看起來像_your_代碼首先 – 2013-03-12 00:28:27

+0

什麼不明確,以及如何工作的不? – Dan 2013-03-12 00:28:46

回答

0

的代碼不會編譯,原因是多方面的......

例如:

  1. 爲什麼這一行:

    ex.printStackTrace();

    漂浮在您的類ReaderWriter(第21行)並帶走一個catch塊?

  2. 爲什麼你沒有包括聲明?

+0

這裏寫的是我的錯誤:)它正在編譯。問題是,當我嘗試在文件中寫入它沒有找到任何數組。它海帳戶[0] ==空,但這不是真的。我不明白爲什麼? – user2158926 2013-03-12 09:35:19

+0

如果沒有看到代碼的其餘部分,很難知道。我可以看到邏輯中的許多違規行爲。另外'name1 = input.next();','number1 = input.nextInt();'和'money1 = input.nextInt();'這兩行看起來很可疑。在繼續之前驗證'number1','money1'和'name1'的值。最後,在if(accounts [i] == null)和if(i <1)這兩行中,你應該真正修復邏輯,至少不會在這些部分輸入更多的內容,因爲'i <1'只需要一次迭代,而且你已經設置了'repeate2 = false;'這意味着while循環只有一次。 – emecas 2013-03-12 10:12:51

+0

整個程序正在運行一個循環。我可以輸入多個帳戶,然後將其保存在數組中。那麼我可以在控制檯中打印全部或僅一個帳戶。一切安好。第一個循環應該剛剛進入。當我輸入第一個帳戶。那麼當我想進入secend賬戶時,它就會進入secont循環。只是喋喋不休,我沒有提供相同的帳號。整個程序正在工作。我只需要將寫入帳戶添加到文件。而當我下次啓動程序時,我需要從文件中讀取帳戶。 – user2158926 2013-03-12 10:15:38