急求java问题

qq_35070273 2017-06-28 09:58:52
编写程序,使用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。
...全文
226 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
wgd81685 2017-06-28
  • 打赏
  • 举报
回复
1 首先楼主的代码中下面这段代码是没有结果的,因为数据尚未保存到file中 while((s=ran.readLine())!=null){ 若楼主一定想要先写文件,再读文件取随机行数的逻辑,建议在写文件之后将randomaccessfile关闭,然后创建新的randomaccessfile来读取该文件 2 我想楼主是想从一个文件中读取内容,然后将读取到的内容放入list中,然后再随机从list中取内容写入另一文件中。这样楼主的问题的可以简化为“在一个list中,如何随机取数据”,这个其实就很简单了 public String getRandom(List<String> list) { int len = list.size(); Random random = new Random(); int ran = random.nextInt(len); return list.get(ran); }

51,410

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧