Java 从数组写入可序列化对象

Java 从数组写入可序列化对象,java,arrays,object,serialization,Java,Arrays,Object,Serialization,我对这件事有点意见。我尝试创建一个数组,用户在其中输入数据,数据需要保存在object.obj文件中 这是我的代码: import java.util.*; 公共类insertData实现java.io.Serializable { 扫描仪键盘=新扫描仪(System.in); 私有字符串1; 私人字符串二; 新公共图书馆 { System.out.println(“要插入多少行?”); int p=keyboard.nextInt(); 对于(int i=0;i

我对这件事有点意见。我尝试创建一个数组,用户在其中输入数据,数据需要保存在object.obj文件中

这是我的代码:

import java.util.*;
公共类insertData实现java.io.Serializable
{
扫描仪键盘=新扫描仪(System.in);
私有字符串1;
私人字符串二;
新公共图书馆
{
System.out.println(“要插入多少行?”);
int p=keyboard.nextInt();
对于(int i=0;i
文件类将是:

import java.io.*;
公共类文件
{
insertData iD=新的insertData()
字符串a;
对象输出流oos;
目的输入流ois;
公共无效写文件(文件)
{
尝试
{
oos=新对象输出流(新文件输出流(文件1));
a=iD.toString();
oos.writeObject(a);
oos.close();
} 
catch(filenotfounde异常)
{
e、 printStackTrace();
} 
捕获(IOE异常)
{
e、 printStackTrace();
}
}
公共void readFile(文件file1)
{
尝试
{
ois=新对象输入流(新文件输入流(文件1));
String str=(String)ois.readObject();
系统输出打印项次(str);
ois.close();
}
捕获(IOEX异常)
{
系统错误打印项次(ex);
}
捕获(ClassNotFoundException ex)
{
系统错误打印项次(ex);
}
}
}
问题是,这只保存输入的最后一行数据。 结果应该是:

Text1     Text2
aaaaa     bbbbb
ccccc     ddddd

问题是您只有一个
1
2个
,因此当您遍历此循环时

for (int i = 0; i < p; i++) 
{
    One=keyboard.next();
    Two=keyboard.next();
}
for(int i=0;i
您正在覆盖这些值。这就是为什么只得到最后的值

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

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());
}
List one=newarraylist();
List twos=new ArrayList();
...
对于(int i=0;i
也可以附加到缓冲区

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

然后只需适当地写入文件

new()
不是有效的方法。主类在哪里?@Eng.Fouad是正确的。不能将java保留关键字用作方法名称。这就引起了一个疑问,那就是你首先应该如何执行这个程序。您一定有编译器错误。(主题外,但一些友好的Java建议:您应该使用
UppercaseStartingCamelCase
作为类名(例如
FileA
not
FileA
InsertData
not
InsertData
)。您的方法名已经遵循了正确的常规。这里没有数组。这不是一个真正的问题。谢谢你的回答@greedyfoddha。我终于解决了这个问题。我在添加文本时遇到了“+=”问题。PS:main类被故意省略,因为问题不在那里,new()它只是一个例子…;-)再次感谢你的帮助。问题解决了!没问题,+=是一个同样有效的解决方案。它与StringBuilder做的事情相同,但直接(效率稍低;)。