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("\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();

 }

}





 

 

 



 




 

 

你可能感兴趣的:(java实现)