【问题标题】:Calling a Method in a Loop Error [closed]在循环错误中调用方法[关闭]
【发布时间】:2013-06-22 15:13:32
【问题描述】:

我正在尝试使用以下 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( );
}
}

【问题讨论】:

  • 错误是什么?可以发一下吗?
  • 你能发送错误吗?
  • currentTransaction 未定义
  • @Smit 用错误编辑了我的问题。对不起。
  • @UğurARTUN 用错误编辑了我的问题。对不起。

标签: java methods error-handling constructor while-loop


【解决方案1】:

变量currentTransaction 不存在于您的函数balanceCheckBook 的范围内。如果是这种情况,您需要将变量传递给函数balanceCheckBook,或者在名为currentTransaction 的类中创建一个成员变量。

换句话说,当您在函数balanceCheckBook 中调用函数animate 且变量currentTransaction 未定义时,编译器将永远不会知道您将哪个值传递给函数animate

animate(  currentTransaction, currentAmount, currentBalance );

因此,您需要定义currentTransaction 并让Java 知道要传递什么值。

【讨论】:

    【解决方案2】:

    currentTransaction 没有定义在方法的范围内,也不是方法的参数。您需要将变量作为参数传递或使其成为实例变量。声明为的方法:

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

    因此,您需要使用 Stringdouble 和另一个 double 来调用它:animate(String, double ,double),而您将其称为 animate( currentTransaction, currentAmount, currentBalance );,但我看不出您在哪里定义 currentTransactioncurrentBalance

    【讨论】:

    • 如何将变量作为参数传递?
    【解决方案3】:

    对我来说,您应该使用变量 balance 而不是 currentBalancetranstransactionName 而不是 currentTransaction

    【讨论】:

      猜你喜欢
      • 2012-04-03
      • 2012-12-09
      • 1970-01-01
      • 2023-01-22
      • 2018-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多