java计算文件里的总分_java程序读取txt文件并计算总分 求帮忙

展开全部

你这个不难,就是字符串处理,

你的文件修改下:每行两两元素636f70793231313335323631343130323136353331333332636336之间的空格用一个,如果超过一个,下面的程序会报错import java.io.File;

import java.text.DecimalFormat;

import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

import java.util.Scanner;

public class $ {

/** 自然序列,数组下标从零开始,一会再做相应处理 */

private static int[] ASSIGNMENT_IDX = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,

26 };

/** 自然序列,数组下标从零开始,一会再做相应处理 */

private static int[] TEST_IDX = { 22, 23, 2, 25, 27, 28 };

public static void main(String[] args) {

Map data = new HashMap();

try {

Scanner in = new Scanner(new File("D:/a.txt"));

while (in.hasNextLine()) {

String str = in.nextLine();

String[] arr = str.split(" ");

String key = arr[0] + arr[1];

int assignment = 0;

int test = 0;

for (int idx : ASSIGNMENT_IDX) {

// 数组下标: 2 + idx - 1

assignment += Integer.parseInt(arr[1 + idx].trim());

}

for (int idx : TEST_IDX) {

// 数组下标: 2 + idx - 1

test += Integer.parseInt(arr[1 + idx].trim());

}

data.put(key, new Bean(assignment, test));

}

// 读取后

System.out.println("读取文件后:");

show(data);

String minkey = getMinBean(data);

System.out.println("assignment最小:" + minkey + "-" + data.get(minkey));

String maxKey = getMaxBean(data);

System.out.println("assignment最大:" + maxKey + "-" + data.get(maxKey));

} catch (Exception e) {

e.printStackTrace();

}

}

private static String getMinBean(Map data) {

Iterator it = data.keySet().iterator();

String minKey = "";

Bean minBean = new Bean(Integer.MAX_VALUE, 0);

while (it.hasNext()) {

String key = it.next();

Bean bean = data.get(key);

if (bean.getAssignment() 

minBean = bean;

minKey = key;

}

}

return minKey;

}

private static String getMaxBean(Map data) {

Iterator it = data.keySet().iterator();

String maxKey = "";

Bean maxBean = new Bean(Integer.MIN_VALUE, 0);

while (it.hasNext()) {

String key = it.next();

Bean bean = data.get(key);

if (bean.getAssignment() > maxBean.getAssignment()) {

maxBean = bean;

maxKey = key;

}

}

return maxKey;

}

private static void show(Map data) {

Iterator it = data.keySet().iterator();

while (it.hasNext()) {

String key = it.next();

Bean bean = data.get(key);

System.out.println(key + "-" + bean);

}

}

}

class Bean {

private int assignment;

private int test;

private DecimalFormat df;

public Bean(int assignment, int test) {

this.assignment = assignment;

this.test = test;

// 格式化数字,保留两位小数

df = new DecimalFormat("#.##%");

}

public int getAssignment() {

return assignment;

}

public int getTest() {

return test;

}

public String pAssignment() {

return df.format(assignment * 1.0 / 1200);

}

public String pTest() {

return df.format(test * 1.0 / 300);

}

public String toString() {

return "Assignments:" + assignment + "(" + pAssignment() + ") Tests:" + test + "(" + pTest() + ")";

}

}结果:

读取文件后:

AnthonyHopkins-Assignments:854(71.17%) Tests:264(88%)

RafaelVega-Assignments:801(66.75%) Tests:221(73.67%)

PanMei-Assignments:730(60.83%) Tests:264(88%)

JohnSmith-Assignments:730(60.83%) Tests:249(83%)

assignment最小:PanMei-Assignments:730(60.83%) Tests:264(88%)

assignment最大:AnthonyHopkins-Assignments:854(71.17%) Tests:264(88%)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值