说明如下:
要处理事务,您需要从transactions.txt文件中一次读取一行,并解析检索到的字符串。您可以为此使用Scanner类。分隔符将是冒号。然后处理交易;您不需要检查交易类型。只需将交易金额添加到支票簿余额中即可。增加一个负交易金额会像预期的那样减少余额。确保在适当的地方使用try/catch块。
处理完每个事务后,调用animate方法。此方法属于Accounting类,因此您将在不使用对象引用的情况下调用animate。动画方法的API如下所示
public void animate { String currentTransaction, double currentAmount, double currentBalance, }
如您所见,animate方法采用三个参数:currentTransaction是事务名称(例如“destination”),currentAmount是事务的金额(例如-45.00),以及currentBalance是支票簿的当前余额。假设您有一个名为transactionName的String变量、一个名为amount的double变量和另一个名为balance的double变量,那么对animate的调用将如下所示:
animate( transactionName, amount, balance);
当您调用动画时,窗口将按地理位置显示当前事务。它还将显示交易金额(如果为负,则为红色,如果为正,则为蓝色),以及当前支票簿余额(黑色)。通过将以前的支票簿余额添加到当前的金额,您将能够在头脑中计算当前支票簿的金额,并确定您的程序是否正常工作。
到达文件末尾时,打印最终余额并将其写入名为balance.txt的文件。
到目前为止,我已经在Accounting类中编写了这么多代码:
import javax.swing.*;
import java.text.DecimalFormat;
import java.awt.Graphics;
import java.util.*;
import java.io.*;
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;
}
public void animate( String currentTransaction, double currentAmount, double currentBalance )
{
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 ) );
bankAccount.updateBalance( currentBalance );
repaint( );
try
{
Thread.sleep( 3000 );
}
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( );
}
}
使用扫描器是读取java文件的最简单方法
import java.util.Scanner
然后
Scanner myScanner = new Scanner(new File("/Your/File/Path/Here/transactions.txt");
然后
String line;
while (myScanner.hasNextLine()) {
line = myScanner.nextLine();
//i think you'll call your animate function in here
}
[编辑]
op想要一个关于如何扫描每一行的解释,这里是一个演示
while (myScanner.hasNextLine()) {
line = myScanner.nextLine();
Scanner lineReader = new Scanner(line);
String firstWord = lineReader.next();
String secondWord = lineReader.next();
double thirdWordValue = lineReader.nextDouble();
double fourthWordValue = lineReader.nextDouble();
animate(firstWord, thirdWordValue, fourthWordValue);
}
我试图将两个数组和一个整数从另一个方法引入到写入文件的方法中。我试着用论据来解释,但没有用。希望你能帮忙 这是我如何传递参数从方法持有arry信息。 此方法旨在使用传递的数组参数创建文件。 这是读取文件的方法 请你能告诉我哪里出了问题,我如何创建一个文件,保存数组并稍后读取文件。 *************编辑代码******************** { }公共静态无效读取()抛出IOExce
本小节将会介绍基本输入输出的 Java 标准类,通过本小节的学习,你将了解到什么是输入和输入,什么是流;输入输出流的应用场景,File类的使用,什么是文件,Java 提供的输入输出流相关 API 等内容。 1. 什么是输入和输出(I / O) 1.1 基本概念 输入/输出这个概念,对于计算机相关专业的同学并不陌生,在计算中,输入/输出(Input / Output,缩写为 I / O)是信息处理系
我想用java代码调用一个外部程序,然后Google告诉我Runtime或ProcessBuilder可以帮助我完成这项工作。我试过了,结果发现java程序无法退出,这意味着子进程和父进程都将永远等待。它们要么挂起,要么陷入僵局。 有人告诉我原因是子进程的缓存太小了。当它试图将数据返回给父进程时,但是父进程没有及时读取它,然后他们两个都挂起了。所以他们建议我叉一个线程来负责读取子进程的缓存数据。我
文件 std::fs::File 本身实现了 Read 和 Write trait,所以文件的输入输出非常简单,只要得到一个 File 类型实例就可以调用读写接口进行文件输入与输出操作了。而要得到 File 就得让操作系统打开(open)或新建(create)一个文件。还是拿例子来说明 use std::io; use std::io::prelude::*; use std::fs::File;
回顾一下我们写的第一个 Rust 程序就是带副作用的,其副作用就是向标准输出(stdout),通常是终端或屏幕,输出了 Hello, World! 让屏幕上这几个字符的地方点亮起来。println! 宏是最常见的输出,用宏来做输出的还有 print!,两者都是向标准输出(stdout)输出,两者的区别也一眼就能看出。至于格式化输出,基础运算符和字符串格式化小节有详细说明,这里就不再啰嗦了。 更通用
我是Java的新手,两周前开始,有一些问题困扰着我。我在一堂课上遇到了一个以前提到过的问题。将公斤换算成磅,四舍五入到小数点后第二位。 我可以创建事物的输入端,并打开一个对话框来提示用户输入权重。我还可以创建一个输出,使用我创建的方程式在对话框中输出答案。 我的问题是,我如何获取输入的信息并使用它将公斤转换为磅? 我一直在读我的书,在互联网上搜寻答案,我想我可能想得太多了。谢谢你的帮助。 输入ja