如何使用用户输入值存储数组

我正在学校上一门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();
    }

bjwmkj 回答:如何使用用户输入值存储数组

您必须准确阅读所写内容。如果不这样做,类型将不匹配。因此,例如,当您最初执行ReadDouble时,它遇到了人员名称,从而导致您启动问题时出错。最近的部分比较微妙,因为已编写了一个双精度数组,但是您试图将其作为整数数组读取(传递)。

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

el-dropdown-item
,

实际上,代码有一个偶然的问题。

Private Sub Form1_Load(sender As Object,e As EventArgs) Handles MyBase.Load
    Dim sp As New SerialPort()
    sp.PortName = "COM1"
    sp.BaudRate = CInt("9600")
    sp.Parity = Parity.None
    sp.StopBits = StopBits.One
    sp.Handshake = Handshake.None
    sp.Open()
    sp.ReadTimeout = 200
End Sub

Private Sub SerialPort_DataReceived(ByVal sender As System.Object,ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort.DataReceived
    TextBox1.Text += DirectCast(sender,SerialPort).ReadExisting
End Sub

int[] newNumbers = (int[]) (input.readObject()); readObject()

中类ObjectInputStream的方法 根据代码,

java.io.ObjectInputStream.ObjectInputStreaminput包中Scanner类的对象。

您的声明java.util.Scanner在我看来是无效的,应该提出:

  
    

未为Scanner类型定义readObject()方法

  

问题的解决方案是:-

input.readObject()

很高兴收到您的来信

谢谢。

本文链接:https://www.f2er.com/3083727.html

大家都在问