java 读取文件内容并计算后格式输出!

从文件courseData.txt读入学生成绩,文件格式为0.300.300.40//平时期中期末的所占比例1613333706050444450505055558090... 从文件courseData.txt读入学生成绩,文件格式为
0.30 0.30 0.40 // 平时 期中 期末的所占比例
161
3333 70 60 50
4444 50 50 50
5555 80 90 80
0 //读到0时此循环结束
162
1212 90 85 92
6666 60 80 90
计算并输出所有学生的总评并判断通过与否和平均值
输出样式:

学好 作业 期中 期末 学期成绩 总评
--------------------------------------------------------------------------------------------------------
3333 70 60 50 59.00 Pass
4444 50 50 50 50.00 Fail
5555 80 90 80 83.00 Pass
Class Average: 64.00
展开
 我来答
敏杰软件
2012-07-31 · TA获得超过211个赞
知道小有建树答主
回答量:322
采纳率:0%
帮助的人:192万
展开全部
public static void main(String[] args) throws IOException {
String pathname = "c:/vke.txt";
read(pathname);
}
public static void read(String pathname) throws IOException {
BufferedReader reader = new BufferedReader(new FileReader(pathname));
int first = 0, count = 0;
double a = 0, b = 0, c = 0, all = 0;
String line = "";
while ((line = reader.readLine()) != null) {
if (line.equals("0"))
continue;
if (0 == first++) {
String[] p = line.trim().split(" ");
a = Double.parseDouble(p[0]);
b = Double.parseDouble(p[1]);
c = Double.parseDouble(p[2]);
continue;
}
String[] s = line.trim().split(" ");
double[] g = new double[s.length];
for (int i = 0; i < g.length; i++) {
g[i] = Double.parseDouble(s[i]);
}
double result = g[0] * a + g[1] * b + g[2] * c;
all = all + result;
count++;
System.out.println(s[0] + " " + s[1] + " " + s[2] + " " + result + " ");
}
System.out.println("Average:" + all / count);
}

如果不给分,真想给你一巴掌
追问
谢谢!!!我来完善一下。 最後一句话显得很多馀。 给分了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
caoyunhui73
2012-07-31 · 超过45用户采纳过TA的回答
知道小有建树答主
回答量:129
采纳率:0%
帮助的人:102万
展开全部
try {
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
StringBuffer sb = new StringBuffer();
String line = br.readLine();
while(line!=null){
sb.append(line);
sb.append("\n");
line = br.readLine();
if(line.trim().equals("0"))
break;
}
br.close();
fr.close();
System.out.println(sb.toString());

} catch (IOException e) {
e.printStackTrace();
}
追问
怎么解决0.30 0.30 0.40的问题
追答
拿到第一行数据,
把这一行数据进行 split(" "); 得到 平时 期中 期末
70 * 0.3 + 60*0.3+ 50*0.4 可以得到你想要的结果!
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lzpjavaandroid
2012-07-31
知道答主
回答量:10
采纳率:0%
帮助的人:1.5万
展开全部
用IO流对文件readLine()一行一行的读取,每一行是一个字符串(String),再吧字符串拆分成String[]
最后根据String[]的索引来操作对应的数据
追问
能否具体点?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ge上善若水
2012-07-31 · 超过11用户采纳过TA的回答
知道答主
回答量:241
采纳率:0%
帮助的人:90.3万
展开全部
推荐的不错
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式