我正在写一个.dat文件。这是代码:
String quit = "";
while(!quit.equals("quit")){
number = number + 1;
int pid = number;
String firstName = JOptionPane.showInputDialog("Give a first name to the Customer:");
String lastName = JOptionPane.showInputDialog("Give a surname to the Customer:");
String profession = JOptionPane.showInputDialog("Set the profession of the Customer:");
quit = JOptionPane.showInputDialog("If you are finished, type quit. Otherwise, press any key:");
boolean append = true;
out = new BufferedWriter ( new FileWriter("C:\\Temp\\persons.dat", append));// open the file for writing
out.write (Integer.toString( pid) );
out.newLine();
out.write ( firstName );
out.newLine();
out.write ( lastName );
out.newLine();
out.write (profession);
out.newLine();
out.newLine();
out.close();
如果我知道f.ex.输入John作为名字,Smith作为姓氏,构建器作为专业,这将是代码中的输出: 1 约翰 工匠 助洗剂
但是,如果我再次运行代码,pid - >人员ID将再次从1开始,但我希望它能够确定输入了多少不同的人,并从那里继续递增。我猜这可以很容易地完成,但我的思绪已经停止了。
答案 0 :(得分:1)
您的number
变量似乎是该方法的本地变量,或者每次启动程序时至少将其初始化为0
。
你需要做的是使它成为一个类成员并将其初始化为输出文件中可用的数字记录,即在类的构造函数中可以通过调用方法来初始化成员变量number
,让我们称它为例如readPersons()
,它读取输出文件(如果可用),解析它,然后确定到目前为止输入的记录数。
这是您需要的功能 - 如果还没有它 - 用于在输出文件中显示人员。
如果你还没有,我会建议创建一个拯救人的课程:
public class Person {
int pid;
String firstName, lastName, profession;
}
然后,您阅读此人的方法应返回List
人物对象
List<Person> readPersons() {
List<Person> persons = new ArrayList<Person>();
// open file for reading
// read line by line
// once you have red all data for a person,
// create a Person object an add it to the List persons
return persons;
}
初始number
,人数
number = readPersons().size();
答案 1 :(得分:0)
每次运行此编号时,编号将重新初始化为0.为了完成这项工作,您必须在将新编号写入文件之前从文件中读取编号。