JAVA编程题

1.从键盘输入20条记录:姓名、计算机成绩、英语成绩,每栏中间空两个空格,输入至文件my.txt中。2.从上题中my.txt输入,计算计算机平均成绩,然后将姓名、计算机成... 1.从键盘输入20条记录:姓名、计算机成绩、英语成绩,每栏中间空两个空格,输入至文件my.txt中。
2.从上题中my.txt输入,计算计算机平均成绩,然后将姓名、计算机成绩、英语成绩、计算机平均成绩输出至文件my2.txt。
要求:源代码编译后能直接运行,不需修改
- -第一个我也做出来了,我就第二个不会。怎么用读取里面的20个计算机成绩?循环里面应该怎么写? 就是怎么读取my.txt里面的计算机成绩?
展开
 我来答
百度网友0de4684d5
2010-05-16 · TA获得超过241个赞
知道小有建树答主
回答量:167
采纳率:66%
帮助的人:162万
展开全部
首先 ,我有个疑问 :你所说的计算机平均成绩是 20条记录所有计算机成绩的平均成绩 还是说 没条记录中计算机成绩和英语成绩的平均成绩呢?

我写了一个计算20条记录所有计算机成绩的平均成绩的代码 测试了 能通过,并且注释比较详细 ,你好好看看,希望能解决你的问题,并且希望你能从这段里面能学到一些东西。(在eclipse中建个类,然后在my.txt写一些模拟数据就可以运行起来了)

代码以及测试代码如下:

package com.test;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class Test {

/** 列之间的间隔符号 要求为" " */
private static final String SPEARATE_STR = " ";

public static void main(String[] args) {
// TODO Auto-generated method stub
String souFileName = "D:/my.txt.txt";
String aimFileName = "D:/my.txt2.txt";
StatisticsAvaerge(souFileName,aimFileName);
}

/**
* 统计计算机平均成绩 并写入指定文件
*
* @param souFileName 源文件名,格式入下:
* '姓名 计算机成绩 英语成绩'
*
* @param aimFileName 统计后的结果写入的目标文件名
* '姓名 计算机成绩 英语成绩 计算机平均成绩'
*/
public static void StatisticsAvaerge(String souFileName,String aimFileName) {
if(souFileName == null || souFileName.length() == 0) {
throw new IllegalArgumentException("你输入的文件名为null或空!");
}
BufferedReader br = null;
List<String> lineList = new ArrayList<String>();
try {
br = new BufferedReader(new FileReader(souFileName));
String line = null;
//循环读文件 读出的每一行存入List中
while((line=br.readLine()) != null ) {
lineList.add(line);
}
// 处理从源文件读出的内容 返回要输入目标文件的字符串
String inputInfo = getInputInfo(lineList);
//将指定字符串inputInfo写入文件 aimFileName
write2file(aimFileName,inputInfo);
}catch(IOException e) {
e.printStackTrace();
}finally {
if(br != null) {
try {
br.close();
} catch (IOException e) {
// close quietly
}
}
}

}

private static String getInputInfo(List<String> lineList) {
if(lineList == null || lineList.size() == 0 ) {
return "";
}
StringBuffer buf = new StringBuffer();
String avaergeStr = countAvaerge(lineList);
for(String line:lineList) {
buf.append(line);
buf.append(SPEARATE_STR);
buf.append(avaergeStr);
buf.append("\n");
}
return buf.toString();
}

/**
* 统计计算机平均成绩 如所有20条记录计算机成绩的平均成绩
*
* @param lineList
* @return
*/
private static String countAvaerge(List<String> lineList) {
double sum = 0.0; //统计成绩总和
for(String line:lineList) {
int start = line.indexOf(SPEARATE_STR)+SPEARATE_STR.length();
int end = line.indexOf(SPEARATE_STR,start);
System.out.println("计算机成绩是:"+line.substring(start, end));
sum += Double.parseDouble(line.substring(start, end));
}
return String.valueOf(sum/lineList.size());
}

/**
* 将指定字符串inputInfo写入文件 aimFileName
*
* @param fileName 要写入的文件名
* @param content 文件内容
*/
public static void write2file(String fileName,String content) {
if(fileName == null || fileName.length() == 0) {
throw new IllegalArgumentException("你输入的文件名为null或空!");
}
BufferedWriter bw = null;
try {
bw = new BufferedWriter(new FileWriter(fileName));
bw.write(content);
bw.flush();
}catch(IOException e) {

} finally {
if(bw != null) {
try {
bw.close();
} catch (IOException e) {
//quiet close
}
}
}
}
}
ziai12
2010-05-11 · TA获得超过425个赞
知道小有建树答主
回答量:149
采纳率:0%
帮助的人:137万
展开全部
你要UI的还是黑屏的?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiaohui249
2010-05-11 · 超过13用户采纳过TA的回答
知道答主
回答量:46
采纳率:0%
帮助的人:0
展开全部
import java.io.*;
import java.util.*;

public class Read
{
public static void main(String[] args)
{
try{
int i = 0;
byte[] byt = new byte[1024];
FileOutputStream fos = new FileOutputStream("my1.txt");
while(i<20)
{
int len = System.in.read(byt);
fos.write(byt,0,len);
i++;
}
}catch(IOException e){
System.out.println(e.getMessage());
}
}
}
这是第一个问题的代码。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yang163_yang
2010-05-12 · TA获得超过499个赞
知道小有建树答主
回答量:207
采纳率:0%
帮助的人:266万
展开全部
你的文件格式是:
姓名 计算机成绩 英语成绩
姓名 计算机成绩 英语成绩
姓名 计算机成绩 英语成绩
这样么?
如果是的话
FileReader r = new FileReader("my.txt");
LineNumberReader l = new LineNumberReader(r);
String line = l.readLine();
while(line!=null) {
String[] data = line.split(" ");
//......................
//...............
line = l.readLine();
//data[0]是姓名,data[1]是计算机成绩,data[2]是英语成绩,后面看着办吧。。注意是字符串
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式