我正在学校上一门Java课程,并被问到以下问题: “编写一个程序,将五个int值1、2、3、4和5的数组,当前时间的Date对象和双精度值5.5存储在名为Exercise17_05.dat的文件中。”
我的教授想通过说:“我们将对此做一些改动,因为您需要让用户输入他们的名字,然后输入五(5)个整数值以及上面提到的其他两项,对此问题进行修改。 。”
由于这里的出色人才,我想出了解决原始问题的方法。我试图用我所知道的来修改程序,但是不断出现“线程异常”错误。
Exception in thread "main" java.io.EOFException
at java.io.DataInputStream.readFully(DataInputStream.java:197)
at java.io.DataInputStream.readLong(DataInputStream.java:416)
at java.io.DataInputStream.readDouble(DataInputStream.java:468)
at java.io.ObjectInputStream$BlockDataInputStream.readDouble(ObjectInputStream.java:3208)
at java.io.ObjectInputStream.readDouble(ObjectInputStream.java:1061)
at cosc_hw17.COSC_HW17.main(COSC_HW17.java:75)
Java Result: 1
我知道这与创建数组和从文件部分读取原始数据有关。任何帮助将不胜感激。
我所拥有的附在下面。我更新了代码,仍然遇到问题。错误是读取它找不到数字的“ readObject”的符号
import java.io.*;
import java.util.Scanner;
import java.util.Arrays;
import java.util.Date;
public class COSC_HW17
{
// main method
public static void main(String[] args)
throws ClassnotFoundException,IOException
{
// create scanner
Scanner input = new Scanner (System.in);
// stores integers in array
double [] numbers = new double [5];
// stores the returned array from method
double[] ret;
//Create an output stream for file
ObjectOutputStream output
= new ObjectOutputStream(
new FileOutputStream("Exercise17_05.dat",true));
// Ask user for name
System.out.println("Please Enter Name:");
String name = input.next();
// Ask user for numbers
System.out.println("Input Five Integer Values:");
for (int i = 0; i < 5; i++)
{
numbers[i] = input.nextInt();
}
//Write to file
// 1. Write name
output.writeUTF(name);
// 2. Write int array object
output.writeObject(numbers);
// 3. Write double
output.writeDouble(5.5);
// 4. Write date object
output.writeObject(new java.util.Date());
// 5. Write utf string
output.writeUTF("Exercise17_05.dat");
// Close the stream
output.close();
//Create an input stream for file
ObjectInputStream report
= new ObjectInputStream
(new FileInputStream("Exercise17_05.dat"));
// Read from file
// 1. Read name
System.out.println("Name: " + name);
// 2. Read int array object
int[] newNumbers = (int[]) (input.readObject());
System.out.println("Integers: " + Arrays.toString(newNumbers));
// 3. Read double
double doubleValue = report.readDouble();
System.out.println("Double value: " + doubleValue);
// 4. Read date object
Date date = (java.util.Date) (report.readObject());
System.out.println("DateTime: " + date);
// 5. Read utf string
String fileName = report.readUTF();
System.out.println("File name: " + fileName);
// Close the stream
input.close();
}