这是我的代码,它接受一个文本文件并创建一个帐户对象,我遇到的问题是打印出银行帐户数组中的帐户对象
public static void main (String[] args)
{
try {
// Read data from a file into a Bank.
// Each line of the file has info for one account.
BankInterface myBank = readFromFile("BankAccounts.txt");
// Print all the data stored in the bank.
System.out.println (myBank);
} // end try
catch (IOException ioe) {
System.out.println("IOException in main: " + ioe.getMessage());
ioe.printStackTrace();
} // end catch
catch (Exception e) {
System.out.println("Exception in main: " + e.getMessage());
e.printStackTrace();
} // end catch
} // end main
/**
* readFromFile: **** INSERT COMMENTS ****
*
*/
public static BankInterface readFromFile (String fileName) throws IOException
{
// Creata a bank.
BankInterface myBank = new Bank("Bank");
// Open a file for reading.
Scanner inputSource = new Scanner (new File(fileName));
// while there are more tokens to read from the input source...
while (inputSource.hasNext()) {
// Read one line of input from the file into an Account object
Account acct = InputManager.readOneAccountFrom (inputSource);
// Store the account info in the bank.
//**** INSERT CODE TO ADD acct TO THE BANK ****
myBank.addAccount(acct);
} // end while
return myBank;
} // end readFromFile
当我运行主程序时,我没有打印出帐户,我只是得到:
Reading: name,id,balance
Exception in main: null
有人可以解释为什么会发生这种情况以及如何解决它吗? 堆栈跟踪:
java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1371)
at InputManager.readOneAccountFrom(InputManager.java:30)
at ATM.readFromFile(ATM.java:48)
at ATM.main(ATM.java:15)
at __SHELL3.run(__SHELL3.java:6)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at bluej.runtime.ExecServer$3.run(ExecServer.java:730)
这是 readOneAccountFrom 方法:
public static Account readOneAccountFrom (Scanner inputSource)
{
// Read one line of account data into oneLine
System.out.println ("Reading: name,id,balance");
String oneLine = inputSource.nextLine();
// Parse line of account data, separated by commas.
Scanner lineTokenizer = new Scanner (oneLine);
lineTokenizer.useDelimiter (",");
// Get account data (i.e. name, accountNum and balance) from oneLine
String name = lineTokenizer.next ();
String accountNum = lineTokenizer.next ();
Money balance = new Money(lineTokenizer.nextLong());
// Create and return an Account object with the data read for one account.
Account oneAccount = new Account (name, accountNum, balance);
System.out.println ("Account read: " + oneAccount);
return oneAccount;
} // end readOneAccountFrom
最佳答案
即使你的评论说
//将文件中的一行输入读入 Account 对象
您没有正确读取行。
您应该使用 hasNextLine() 和 nextLine() 从扫描仪读取一行。如下所示:
while (inputSource.hasNextLine()) {
String line = inputSource.nextLine();
关于java - 使用输入文件创建一个对象并将该对象添加到一个数组中,并让它打印出该数组的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37197612/