急求java问题
编写程序,使用RandomAccessFile类模拟存储个人名片,个人名片要求有姓名(String)、年龄(int)和性别(String),要求按顺序存储10个人,然后随机按乱序取出。
我自己的代码如下:
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class RandomSort {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
File file = new File("D:/people.txt");
File file2 = new File("D:/sorted_people.txt");
try {
if(file.exists()) {
file.delete();
file.createNewFile();
}
RandomAccessFile ran = new RandomAccessFile(file, "rw");
for(int i=1;i<3;i++) {
System.out.println("请输入第"+i+"个学生姓名:");
String name = sc.nextLine();
System.out.println("请输入年龄:");
int age = sc.nextInt();
sc.nextLine();
System.out.println("请输入性别:");
String sex = sc.nextLine();
ran.write(("姓名:"+name+",年龄:"+age+",性别:"+sex+"\r\n").getBytes());
}
sc.close();
List<Student> list = new ArrayList<Student>();
String s;
while((s=ran.readLine())!=null){
String stu = new String(s.getBytes("iso-8859-1"),"utf-8");
String name = stu.substring(stu.indexOf("姓名:")+3, stu.indexOf(","));
String age = stu.substring(stu.indexOf("年龄:")+3, stu.lastIndexOf(","));
String sex = stu.substring(stu.indexOf("性别:")+3);
Student student = new Student();
student.setName(name);
student.setsex(sex);
student.setage(age);
list.add(student);
}
ran.close();
RandomAccessFile access = new RandomAccessFile(file2, "rw");
for(int i=0;i<list.size();i++) {
Student stu = list.get(i);
access.write(stu.toString().getBytes());
}
access.close();}
catch (IOException e) {
e.printStackTrace();
}
}
}
class Student {
private String name;
private String age;
private String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getage() {
return age;
}
public void setage(String age) {
this.age =age;
}
public String getsex() {
return sex;
}
public void setsex(String sex) {
this.sex = sex;
} @Override
public String toString() {
return "姓名:"+name+",年龄:"+age+",性别:"+sex+"\r\n";
}
}
请问怎么改才能随机输出到文本file2。