-3

次の API を使用して、while ループでアニメーションを呼び出そうとしています。

public void animate( String currentTransaction, double currentAmount, double currentBalance )

私はこれを使って電話をかけようとしています:

animate(  currentTransaction, currentAmount, currentBalance );

ただし、エラーが発生し続けます。私は何を間違っていますか?

エラーは次のとおりです。

currentTransaction cannot be resolved to a variable and
currentBalance cannot be resolved to a variable

以下に投稿されたのは私のコードです:

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( ) {
    double balance;
    double currentAmount;
    String nextLine;
    StringTokenizer st;
    String transactionName;
    Scanner scan = null;
    try {
         scan = new Scanner (new FileReader("transactions.txt"));
    } catch (FileNotFoundException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
    }
    Scanner callParse;
    String trans;
    while (scan.hasNextLine()) {
        trans = scan.nextLine();
        scan.useDelimiter(":");
        callParse = new Scanner(trans);
        callParse.useDelimiter(":");
    }
    try {
        scan = new Scanner (new FileReader("checkbook.txt"));
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    Scanner callParse2;
    String check;
    while (scan.hasNextLine()) {
        check = scan.nextLine();
        scan.useDelimiter(":");
        callParse2 = new Scanner(check);
        callParse2.useDelimiter(":");
    }

    animate(  currentTransaction, currentAmount, currentBalance );
 }

 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( );
}
}
4

3 に答える 3

3

変数currentTransactionが関数のスコープに存在しませんbalanceCheckBook。その場合は、変数を関数に渡すか、balanceCheckBookという名前のクラス内にメンバー変数を作成する必要がありますcurrentTransaction

つまり、変数undefined を使用して functionanimateで関数を呼び出すと、コンパイラは関数に渡す値を知ることができません。balanceCheckBookcurrentTransactionanimate

animate(  currentTransaction, currentAmount, currentBalance );

currentTransactionしたがって、渡す値を定義して Java に認識させる必要があります。

于 2013-06-25T17:38:48.410 に答える
0

私にとっては、 andまたはbalanceの代わりに変数を使用する必要があるようです。currentBalancetranstransactionNamecurrentTransaction

于 2013-06-25T18:04:30.653 に答える