Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用ObjectInputStream计算对象的和_Java_Fileinputstream - Fatal编程技术网

Java 使用ObjectInputStream计算对象的和

Java 使用ObjectInputStream计算对象的和,java,fileinputstream,Java,Fileinputstream,再次需要我的逻辑帮助。假设Loan类存在,我有一个包含Loan对象的文件。我正在从文件中读取贷款对象并计算贷款总额。我给了其中一个实例一个变量名ld,只是为了向自己证明getLoanAmount()方法是有效的 现在,在while循环的最后,我一直在思考如何计算贷款对象,但将它们转换为整数。我认为input.readObject()方法正在返回对象的一个实例,因此只需要像这样获取整数值: sum = sum + input.readObject().getLoanAmount(); 但是,我得

再次需要我的逻辑帮助。假设
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);
        }
  }
}

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

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

希望这能帮助您找出代码的错误所在。

如果这是作业,大家的共识是您应该添加
作业
标记。请注意,此函数实际上不会引发IOException。好的,从您的回答来看,我想这可能是多态性领域的一个决定性问题。将尝试…只是尝试执行sum=sum+(Loan)input.readObject().getLoanAmount()之类的操作;它不起作用。我感谢你的帮助。我会进一步研究。感谢您至少让我走上了正确的道路。@Addy75该cast正在铸造getLoanAmount和readObject的结果,因此getLoanAmount仍然在Object.ok的实例上被调用。看起来我需要先获取对象,然后再强制转换对象,然后使用get方法获取整数值。好的,我将尝试不同的方法,看看如何做到这一点。谢谢你,我来了!