熟悉输入、输出流和文件操作
import java.io.*;
public class Read{
static int max, min, sum=0;
static int[]a=new int[5000];
public static void main(String args[]){
File f=new File("a.txt");
if(f==null){
System.out.println("Can't create the file!");
System.exit(0);
}
genRandom(f);
calculate(f);
}
static void genRandom(File f){ //产生随机数方法
try{
FileOutputStream fos=new FileOutputStream(f);
DataOutputStream dos=new DataOutputStream(fos);
for(int i=0;i<5000;i++){
dos.writeInt((int)(Math.random()*10000));
}
dos.close();
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}
}
static void calculate(File f){ //计算最大值,最小值,平均值的方法
try{
FileInputStream fis=new FileInputStream(f);
DataInputStream dis=new DataInputStream(fis);
int i;
for(i=0;i<5000;i++){
a[i]=dis.readInt();
}
dis.close();
max=a[0];
min=a[0];
for(i=0;i<5000;i++){
if(max<a[i]) max=a[i];
if(min>a[i]) min=a[i];
sum+=a[i];
}
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}
int average=sum/5000;
System.out.println("max="+max+"\tmin="+min);
System.out.println("sum="+sum+"\taverage="+average);
}
}
import java.io.*;
public class Input{
public static void main(String args[]) throws IOException{
String s;
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
FileWriter fw=new FileWriter("student.txt");
BufferedWriter bw=new BufferedWriter(fw);
System.out.println("请输入姓名:(以空行结束)");
int linenum=0;
while(true){//循环读入字符串
System.out.println("输入姓名、学号: ");
linenum++;
System.out.flush();//清空输出缓冲区
s = br.readLine();//读入输入的一行
if(s.length()==0)break;//若遇到空行则break,结束读-写工作
bw.write(s);//将本行字符串写出到对象bw
bw.newLine(); //在对象bw中创建新行,为下一行输出做准备
System.out.println("输入成绩: ");
linenum++;
System.out.flush();
s = br.readLine();
bw.write(s);
bw.newLine();
}
br.close();
bw.close();
System.out.println("输入的姓名,学号,成绩存入到student.txt文件");
FileReader fr=new FileReader("student.txt"); //创建File对象,并打开文件,作为写出数据的目标
BufferedReader br1=new BufferedReader(fr); //建立缓冲BufferedReader对象br1,关联到fr
String s1;
double temp=0,average=0,sum=0,min=100,max=0;
linenum=0;
s1=br1.readLine(); //读入一行
while(s1!=null){ //当不为空时执行下列语句
linenum++; //行数加一
if(linenum%2==0){ //判断行数 如果是2 的倍数 即为成绩行 进行如下操作
//bw.write(s); //写入s
temp=Double.parseDouble(s1); //强制转换成double型
sum=sum+temp; //加和
if(temp>max){ //判断如果temp比max大
max=temp; //则将temp值赋给max
}
if(temp<min){ //判断如果temp比min小
min=temp; //则将temp值赋给min
}
}
//bw.newLine(); //新建行
s1=br1.readLine(); //读行
}
average=sum/(linenum/2); //成绩的总和除以成绩数计算平均值
System.out.println("成绩的平均值"+average); //输出结果
System.out.println("成绩的最大值"+max);
System.out.println("成绩的最小值"+min);
br1.close();
}
}