这件事我有点问题。我试图创建一个用户输入数据的数组,数据需要保存在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;
}
}
File类将是:
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
答案 0 :(得分:1)
问题是,您只有一个One
和Two
,所以当您重复此循环时。
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");
}
然后恰当地写出文件