gpt4 book ai didi

java - 从数组写入可序列化对象

转载 作者:行者123 更新时间:2023-12-01 14:34:52 25 4
gpt4 key购买 nike

我对这件事有一点问题。我尝试制作一个数组,用户在其中输入数据,并且数据需要保存在object.obj文件中。

这是我的代码:

  import java.util.*;

public class insertData implements java.io.Serializable
{
Scanner keyboard=new Scanner(System.in);
private String One;
private String Two;


public void new()
{
System.out.println("How many lines do you want to insert?");
int p=keyboard.nextInt();

for (int i = 0; i < p; i++)
{
One=keyboard.next();
Two=keyboard.next();
}
}

public String toString()
{
new();
String text=One+"\t"+Two;
return text;
}

}

文件类将是:

  import java.io.*;

public class fileA
{
insertData iD = new insertData()
String a;
ObjectOutputStream oos;
ObjectInputStream ois;

public void writeFile(File file)
{
try
{
oos=new ObjectOutputStream(new FileOutputStream(file1));
a=iD.toString();
oos.writeObject(a);
oos.close();

}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}

public void readFile(File file1)
{
try
{
ois=new ObjectInputStream(new FileInputStream(file1));
String str=(String)ois.readObject();
System.out.println(str);
ois.close();
}
catch (IOException ex)
{
System.err.println(ex);
}
catch (ClassNotFoundException ex)
{
System.err.println(ex);
}

}
}

问题是这仅保存输入的最后一行数据。结果应该是:

Text1     Text2
aaaaa bbbbb
ccccc ddddd

最佳答案

问题是,当您执行此循环时,您只有一个 OneTwo

for (int i = 0; i < p; i++) 
{
One=keyboard.next();
Two=keyboard.next();
}

您正在覆盖这些值。这就是为什么您只获得最后一个值的原因。

您需要做的是将这些元素存储在集合中。

List<String> ones = new ArrayList<String>();
List<String> twos = new ArrayList<String>();
...
for (int i = 0; i < p; i++)
{
ones.add(keyboard.next());
twos.add(keyboard.next());
}

或者您可以附加到缓冲区。

StringBuilder sb = new StringBuilder();
...
for (int i = 0; i < p; i++)
{
sb.append(keyboard.next()+" " +keyboard.next()+"\n");
}

然后适本地写入文件

关于java - 从数组写入可序列化对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16577150/

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