gpt4 book ai didi

java - 如何存储包含用户输入值的数组

转载 作者:行者123 更新时间:2023-12-01 20:27:28 25 4
gpt4 key购买 nike

我正在学校学习 Java 类(class),并被问到以下问题:“编写一个程序,将五个 int 值 1、2、3、4 和 5 组成的数组、当前时间的 Date 对象以及 double 值 5.5 存储在名为 Exerce17_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();
}

最佳答案

你必须准确地阅读你所写的内容。如果不这样做,类型就会不匹配。例如,最初当您执行 ReadDouble 时,它​​遇到了人名,这导致您开始提问时出现错误。最近的文章更加微妙,因为编写了一个 double 组,但您试图将其读取(转换)为整数数组。

所以我们只关注文中发生的事情:

// Read from file
// 1. Read name
String newName = report.readUTF();
System.out.println("Name: " + newName);
// 2. Read double array object
ret = (double[])report.readObject();
System.out.println("Integers: "+ Arrays.toString(ret));
// 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);

关于java - 如何存储包含用户输入值的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58907708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com