java实现点名,并记录被点次数


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("
");
		//读取学生姓名到集合中
		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+"	"+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("
");
 // 用于存储学生姓名和被点次数
 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() + "	" + s.getTime();
 // 把学生信息输出到文本文件中
 ps.println(st);
 }
 ps.close();
 }
}


 
 
 

 


原文地址:https://www.cnblogs.com/pangblog/p/3266667.html