JAVA写个东西读取TXT中的数据 且要计算出平均值和总值 最后还要按总值排序

AVA写个东西读取TXT中的数据 且要计算出平均值和总值 最后还要按总值排序

例如:要计算a.txt文档中内容可如下:

学号 姓名    语文 数学 英语 平均值 总值 排序

1    肯德基   90   98   97

2    经典款   98   97   92

3    肯德的   93   92   97

import java.io.*;
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.TreeSet;

public class FileNumberDemo {
    public static void main(String[] args) throws IOException{
        File file = new File("D:\\a.txt");
        if(!file.exists())
            throw new RuntimeException("文件不存在!");
        BufferedReader br = new BufferedReader(new FileReader(file));
        BufferedWriter bw = new BufferedWriter(new FileWriter("D:\\b.txt"));
        String str = null;
        List<String> list = new ArrayList<String>();
        while((str=br.readLine())!=null){
            list.add(str);
        }
        String[] arr = new String[list.size()];
        TreeSet<Student> tr = new TreeSet<Student>();
        arr = list.toArray(arr);
        for(int i = 0; i < arr.length; i++){
            String[] line = arr[i].split(" +");
            for(int j = 0; j < line.length; j++){
                if(i == 0)
                    bw.write(line[j]+"\t");
                else{
                    tr.add(new Student(Integer.parseInt(line[0]),
                            line[1],Integer.parseInt(line[2]),
                            Integer.parseInt(line[3]),Integer.parseInt(line[4]),
                            (Integer.parseInt(line[2])+Integer.parseInt(line[3])+Integer.parseInt(line[4])/3),
                            (Integer.parseInt(line[2])+Integer.parseInt(line[3])+Integer.parseInt(line[4]))));
                }
            }
            System.out.println();
        }
        bw.write("\r\n");
        int num = 1;
        for(Iterator<Student> it = tr.iterator(); it.hasNext();){
            bw.write(it.next().toString());
            bw.write("\t"+(num++)+"\r\n");
        }
        bw.close();
    }
}
class Student implements Comparable<Student>{
    private int num;
    private String name;
    private int yw;
    private int sx;
    private int english;
    private int pj;
    private int sum;
    public Student(int num,String name,int yw,int sx,int english,int pj, int sum){
        this.num = num;
        this.name = name;
        this.yw = yw;
        this.sx = sx;
        this.english = english;
        this.pj = pj;
        this.sum = sum;
    }
    public int compareTo(Student stu) {
        int num = Integer.valueOf(stu.sum).compareTo(Integer.valueOf(this.sum));
        if(num == 0)
            return Integer.valueOf(stu.num).compareTo(Integer.valueOf(this.num));
        return num;
    }
    public String toString(){
        return num+"\t"+name+"\t"+yw+"\t"+sx+"\t"+english+"\t"+pj+"\t"+sum;
    }
}

通过以上程序,计算出的结果如下:

学号 姓名 语文 数学 英语 平均值 总值 排序 
  2 经典款  98   97   92    225   287  1
  1 肯德基  90   98   97    220   285  2
  3 肯德的  93   92   97    217   282  3

时间: 2024-10-14 05:26:30

JAVA写个东西读取TXT中的数据 且要计算出平均值和总值 最后还要按总值排序的相关文章

Java利用POI导入导出Excel中的数据

     首先谈一下今天发生的一件开心的事,本着一颗android的心我被分配到了PB组,身在曹营心在汉啊!好吧,今天要记录和分享的是Java利用POI导入导出Excel中的数据.下面POI包的下载地址http://poi.apache.org/download.html,有兴趣的朋友也可以去看看其中的API.      下面分享一下在对POI进行基本操作时觉得需要注意的两点:       1.POI中针对xlsx/xls是需要create different Workbook instance

Spark读取Hbase中的数据_云帆大数据分享

Spark读取Hbase中的数据 大家可能都知道很熟悉Spark的两种常见的数据读取方式(存放到RDD中):(1).调用parallelize函数直接从集合中获取数据,并存入RDD中:Java版本如下: 1 JavaRDD<Integer> myRDD = sc.parallelize(Arrays.asList(1,2,3)); Scala版本如下: 1 val myRDD= sc.parallelize(List(1,2,3)) 这种方式很简单,很容易就可以将一个集合中的数据变成RDD的初

【ADO.NET】3、从TXT中导入数据到数据库

private void btnInput_Click(object sender, EventArgs e) { if (opFile.ShowDialog() != DialogResult.OK) //判断用户点击 确定 还是 取消,不点确定,则返回程序 { return; } using(FileStream FStream = File.OpenRead(opFile.FileName)) //打开文件进行读取 { //定义字符编码为GB2312 using (StreamReader

读取文件中的数据(以结构体存放)

/* *读取文件中的数据(数据以结构体存放) */ #include<iostream> #include <fstream> //#define Field 31 //field_anal number #define Field 15 //field_post number using namespace std; //the level restore certain level data //level_z show the level struct Level { int

用JAVA写一个函数,功能如下: 任意给定一组数, 找出任意数相加之后的结果为35(任意设定)的情况

用JAVA写一个函数.功能如下:任意给定一组数,例如{12,60,-8,99,15,35,17,18},找出任意数相加之后的结果为35(任意设定)的情况. 可以递归算法来解: package test1; import java.util.Arrays; public class demo { public static void main(String[] args) { String str = "12,60,-8,99,15,35,17,18,8,10,11,12"; int s

读取Excel中的数据到DataSet

读取Excel中的数据到DataSet 1.引用命名空间 using System.Data.OleDb; 2.输入Excel文件,输出DataSet public DataSet ExecleDs()    {        string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\\data-for-source-apportionment\\PM-SO2-NOx-CO-O3-201311-20140324.xlsx

C# 读取Excel中的数据

#region 读取Excel中的数据 /// <summary> /// 读取Excel中的数据 /// </summary> /// <param name="excelFile">Excel文件名及路径,EG:C:\Users\JK\Desktop\导入测试.xls</param> /// <returns>Excel中的数据</returns> private DataTable GetTable(stri

在Oracle中更新数据时,抛出:ORA-01008: not all variables bound

在Oracle中更新数据时,抛出了一个 :ORA-01008 not all variables bound, 我的理解是不是所有的变量/参数都有边界,不懂: 后来知道了,原来是“不是所有变量/参数都确定”, 就是有些变量没有指定,缺少变量参数, 最后发现是因为在写三层时少写了一个"new OracleParameter(":ID",userinfo.ID);" 导致的.

Java后台按行读取txt文件

java读取txt文件内容.可以作如下理解: 首先获得一个文件句柄.File file = new File(); file即为文件句柄.两人之间连通电话网络了.接下来可以开始打电话了. 通过这条线路读取甲方的信息:new FileInputStream(file) 目前这个信息已经读进来内存当中了.接下来需要解读成乙方可以理解的东西 既然你使用了FileInputStream().那么对应的需要使用InputStreamReader()这个方法进行解读刚才装进来内存当中的数据 解读完成后要输出