gpt4 book ai didi

java - Java NoSuchElementException 错误

转载 作者:行者123 更新时间:2023-12-02 06:56:14 25 4
gpt4 key购买 nike

我正在尝试从文件 transactions.txt 中读取,以下是 transactions.txt 中的内容:

Check # 13 : -200.00
Check # 14 : -100.00
Withdrawal June 12 : -200.00
Withdrawal June 17 : -400.00
Withdrawal June 23 : -100.00
Deposit : 4000.00
Deposit : 100.00
Something else : -1000.00
Check # 16 : -500.00
Check # 15 : -100.00

以下是我的代码:

import javax.swing.JOptionPane;
import java.text.DecimalFormat;
import javax.swing.JFrame;
import java.awt.Graphics;
import java.util.StringTokenizer;
import java.util.Scanner;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.FileNotFoundException;

public class Accounting extends JFrame
{
private BankAccount bankAccount;

public Accounting( )
{
bankAccount = new BankAccount( getBackground( ) );
setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
setSize( 300, 300 );
setVisible( true );
}

public void balanceCheckBook( )
{




// ***** Write the body of this method *****
//
// Using a while loop, read the file transactions.txt
// The file transactions.txt contains
// transactions between you and your bank
//
// You will need to call the animate method inside
// the body of the loop that reads the file contents
//
// The animate method takes three arguments:
// a String, representing the type of transaction
// a double, representing the transaction money amount
// a double, representing the new checkbook balance
// So if these three variables are:
// transactionName, currentAmount, and balance,
// then the call to animate will be:
//
// animate( transactionName, currentAmount, balance );
//
// You should make that call in the body of your while
// loop, after you have updated the checkbook balance
//

double balance = 0.00;
double currentAmount;
String nextLine;
StringTokenizer st;
String transactionName;
Scanner scan = null;


scan = new Scanner (new FileReader("transactions.txt"));

Scanner callParse;
String trans;
while ((trans = scan.nextLine()) != null )
{
scan.useDelimiter(":");
callParse = new Scanner(trans);
callParse.useDelimiter(":");
}


}

public void animate( String currentTransaction, double currentAmount, double currentBalance )
{
// set the current transaction in the bankAccount object
if ( currentTransaction.startsWith( "Ch" ) )
bankAccount.setCurrentTransaction( new Check(currentAmount ) );
else if ( currentTransaction.startsWith( "With" ) )
bankAccount.setCurrentTransaction( new Withdrawal(currentAmount ) );
else if ( currentTransaction.startsWith( "Dep" ) )
bankAccount.setCurrentTransaction( new Deposit(currentAmount ) );
else
bankAccount.setCurrentTransaction( new UnknownTransaction(currentAmount ) );

// set the currentBalance data member in the bankAccount object
bankAccount.updateBalance( currentBalance );

repaint( );
try
{
Thread.sleep( 3000 ); // wait for the animation to finish
}
catch ( Exception e )
{
}
}

public void paint( Graphics g )
{
super.paint( g );
bankAccount.draw( g );
}

public static void main( String [] args )
{
Accounting app = new Accounting( );
app.balanceCheckBook( );
}
}

我在以下位置收到错误:

scan = new Scanner (new FileReader("transactions.txt"));

此外,当我运行代码时,它告诉我:

Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Unknown Source)
at Accounting.balanceCheckBook(Accounting.java:73)
at Accounting.main(Accounting.java:119)

我该如何修复这些错误?

最佳答案

您需要使用 Scaner.hasNextLine 检查扫描仪是否有下一行.

顺便说一句,Java 文档通常在解释为什么抛出特定异常方面非常出色。对于 Scanner.nextLine ,文档报告:

Throws:

  • NoSuchElementException - if no line was found

一定要检查 Java 文档!

关于java - Java NoSuchElementException 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17302182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com