使用ObjectInputStream计算对象的总和

时间:2012-05-10 15:59:37

标签: java fileinputstream

我的逻辑需要一些帮助。假设存在Loan类,我有一个包含Loan个对象的文件。我正在从文件中读取Loan个对象并计算贷款总额。我给其中一个变量名为ld的实例,只是为了向自己证明getLoanAmount()方法有效。

现在在我的while循环结束时,我一直在思考如何计算贷款对象,但将它们变成整数。我认为input.readObject()方法正在返回一个对象的实例,所以只有这样才能获得整数值:

sum = sum + input.readObject().getLoanAmount();

但是,我收到一个错误,说它无法找到符号getLoanAmount(),这就是我感到困惑的地方。我以为我钉了它。有人能告诉我为什么我的逻辑错了。像往常一样,我真的很感激。这是代码:

import java.io.*;
import java.util.Date;
public class RestoringObjects19_7 {
    public static void main(String[] args) throws IOException {
        int sum = 0;
        try {
            ObjectOutputStream output = new ObjectOutputStream(
              new FileOutputStream("Exercise19_7.dat"));
            Loan ld = new Loan(1000);
            System.out.println(ld.getLoanAmount()); //WORKS HERE

            output.writeObject(ld);
            output.writeObject(new Loan(2000));
            output.writeObject(new Loan(3000));
            output.writeObject(new Loan(4000));
            output.writeObject(new Loan(5000));

            output.close();
            ObjectInputStream input = new ObjectInputStream(
              new FileInputStream("Exercise19.7.dat"));
            while(true) {
                sum = sum + input.readObject().getLoanAmount(); //ERROR HERE??
            }
        } catch (Exception e) {
            System.out.println("Sum: " + sum);
        }
  }
}

1 个答案:

答案 0 :(得分:1)

这看起来像是作业,所以我会给你提示而不是一个完整的答案:

  • 方法input.readObject()返回的类型为Object
  • getLoanAmount()是在Loan类型的对象上定义的方法。

希望这可以帮助您找出代码可能出现的问题。