java实现点名,并记录被点次数
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Scanner; public class Demoe1 {
public static void main(String[] args)throws Exception {
File f=new File("src/t7/names.txt");
//用于存放读取进来的学生姓名
ArrayList<String> nameList=new
ArrayList<String>();
//定义用于读取文件的输入流
Scanner cin=new Scanner(new
FileInputStream(f));
cin.useDelimiter("\n");
//读取学生姓名到集合中
while(cin.hasNext()){
nameList.add(cin.next());
}
cin.close();//关闭输入流
f.delete();//删除原有的文本文件
//用于存储处理后的学生姓名
ArrayList<String> resultList=new
ArrayList<String>();
for(String s:nameList){
//用于去掉回车换行
s=s.substring(0,s.length()-1);
//把处理后的学生姓名加来新的容器中
resultList.add(s+"\t"+0);
}
//定义文件输出流
PrintStream ps=new
PrintStream(new
FileOutputStream(f));
//把处理之后的学生姓名写到文本文件中
for(String s:resultList)
ps.println(s);
ps.close();//关闭输出流
}
}
学生姓名和时间
public class Student {
private String name;
private int time; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getTime() {
return time;
} public void setTime(int time) {
this.time = time;
} }
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner; public class RollCall {
public static void main(String[] args) throws Exception {
File f = new File("src/t8/names.txt");
Scanner cin = new Scanner(new FileInputStream(f));
cin.useDelimiter("\n");
// 用于存储学生姓名和被点次数
ArrayList<Student> sList = new ArrayList<Student>();
while (cin.hasNext()) {
String s = cin.next();
// 用空格把学生姓名和次数他隔开
String[] ss = s.split("\\s+");// 正则
Student stu = new Student();
stu.setName(ss[0]);
// 把字符串类型的次数转换成int类型的次数
// 并存入Student类的对象中
stu.setTime(Integer.parseInt(ss[1]));
sList.add(stu);
}
cin.close();
f.delete();
// 产生随机下标
Random r = new Random();
// 下标的上界为数组的长度
int i = r.nextInt(sList.size());
Student student = sList.get(i);
System.out.println(student.getName());
// 被点过名的学生,点名次数加1
sList.get(i).setTime(student.getTime() + 1);
writeStudent(f,sList);
} public static void writeStudent(File f, ArrayList<Student> sList)throws Exception {
// 建立文件输出流
PrintStream ps = new PrintStream(new FileOutputStream(f));
for (Student s : sList) {
// 把学生姓名和被点次数拼成字符串
String st = s.getName() + "\t" + s.getTime();
// 把学生信息输出到文本文件中
ps.println(st);
}
ps.close();
}
}