刚学输出输入流~老师给的题目不会做。。。求指教

逆袭LWJ 2013-11-27 09:12:33
1.编写一个程序:要求从DOS控制台以提问对话的形式,输入三个同学的c语言成绩与java成绩,并将成绩保存到一个“chengji.txt”的文件中.


2.提示:1.创建一个Student学生类,其中域变量包括name,age,javaScore和cScore;

2.创建一个TestChengji类,在main主方法中分别创建三个对象数组:

Student []stu=new Student[3];

stu[] = new Student( );

String []javaScore=new String[3];

String []cScore=new String[3];

将控制台输入的数据保存在数组中,然后在保存到一个文件中。


3.根据上面的程序,编写一个程序,从文件chengji.txt中取出三个同学的成绩,并求出平均成绩输出到dos控制台上显示出来。
...全文
2953 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
滴水石穿 2013-12-04
  • 打赏
  • 举报
回复
自己做都不做就来问 你会越来越艰难
怀念往事 2013-11-30
  • 打赏
  • 举报
回复 3
楼主我给你写了个,你参考参考


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Scanner;

import javax.imageio.stream.FileCacheImageInputStream;


public class TestChengji {

	public static void main(String[] args) throws IOException {

		Student[] students=new Student[3];		
		String[] javaScore=new String[3];		
		String[] cScore =new String[3];
		
		int i=0;
		System.out.println("请输入第一位学生的java成绩,c成绩,以空格分隔,结束先按回车再输入no");		
		//获得键盘输入
		Scanner sc=new Scanner(System.in);
		//当你输入1空格2回车 然后输入no就结束
		while(!sc.hasNext("no"))
		{
			javaScore[i]=sc.next();
			cScore[i]=sc.next();
			i++;
			System.out.println("请输入第"+(i+1)+"位学生的java成绩,c成绩,以空格分隔");
		}
	
		//获得文件字节流
		FileOutputStream  out=new FileOutputStream("E:\\chengji.txt");
		//字节流与字符流的桥梁
		OutputStreamWriter ow=new OutputStreamWriter(out);
		//将字节流转化为带buffer的字符流
		BufferedWriter bw=new BufferedWriter(ow);
		//将成绩输如文件 以逗号分割
		for(int j=0;j<i;j++)
		{
			bw.write(javaScore[j]+","+cScore[j]);
			bw.newLine();
		}
		//close资源,才会最终写入文件,否者不会写入
		bw.close();
		ow.close();
		out.close();
		
		
		//将下面的注释解开就是读取了
//		
//		chengjiOut c=new chengjiOut();
//		c.getPingJunScore();
		

	}

}



class chengjiOut
{
	public void getPingJunScore() throws IOException
	{

		//得到文件的字节流
		FileInputStream in=new FileInputStream("E:\\chengji.txt");
		//inputStreamReader 字节流转换为字符流的桥梁
		InputStreamReader ir=new InputStreamReader(in);
		//有buffer的字符流 
		BufferedReader br=new BufferedReader(ir);
		
		int s=0;//计算行数
		String line="";//读取一行
		String[] dst = null;//读取一行并将内容放入dst数组
		int sum[][]=new int[3][1];//存放学生数据
		//读取一行
		while((line=br.readLine())!=null)
		{
			s++;
			dst=line.split(",");

			if(s==1)
			{
				for(int j=0;j<dst.length;j++)
				{

				sum[0][0]=sum[0][0]+Integer.valueOf(String.valueOf(dst[j]));
					
				}
			}
			if(s==2)
			{
				for(int j=0;j<dst.length;j++)
				{				
				sum[1][0]=sum[1][0]+Integer.valueOf(String.valueOf(dst[j]));

				}
			}
			if(s==3)
			{
				for(int j=0;j<dst.length;j++)
				{
										
				sum[2][0]=sum[2][0]+Integer.valueOf(String.valueOf(dst[j]));

					
				}
			}
			
		}

		br.close();
		ir.close();
		in.close();
		System.out.println("第一位学生平均成绩:"+((float)sum[0][0])/2);
		System.out.println("第二位学生平均成绩:"+((float)sum[1][0])/2);
		System.out.println("第三位学生平均成绩:"+((float)sum[2][0])/2);
		
	}
}



class Student
{
	private String name;
	private int age;
	private String cScore;
	private String javaScore;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getcScore() {
		return cScore;
	}
	public void setcScore(String cScore) {
		this.cScore = cScore;
	}
	public String getJavaScore() {
		return javaScore;
	}
	public void setJavaScore(String javaScore) {
		this.javaScore = javaScore;
	}	
}

鹭岛一枝花 2013-11-29
  • 打赏
  • 举报
回复 1
就帮你写核心的保存到一个文件吧。其他的应该不难吧。省得贴那个多你看着也晕啊。。 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileOutputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class IoTest { public static void main(String[] args) { try { /* * 创建字节输出流fos 将输出结果保存在当前目录的 新建.txt 文件中 */ FileOutputStream fos=new FileOutputStream("chengji.txt",true); /* * 创建字符输出流 osw 传入字节输出流fos */ OutputStreamWriter osw=new OutputStreamWriter(fos); /* * 创建bufferwriter把数据写入文件 传入输出流 osw */ BufferedWriter bw=new BufferedWriter(osw); /* * 创建字符输入流 isr 输入的数据位系统控制台输入的数据 */ InputStreamReader isr=new InputStreamReader(System.in); /* * 创建BufferedReader接收字符输入流 */ BufferedReader br=new BufferedReader(isr); /* * 创建字符串来接收输入的数据 */ String str; /* * while语句输出每次读取的字符串,直到控制台输入结束跳出 */ System.out.println("请输入三个同学的成绩:逗号隔开,回车结束一次,全部输完请输入结束"); while((str=br.readLine())!=null){ //System.out.println(str); if("结束".equals(str)){ break; } /* * 关闭流 */ bw.write(str); bw.newLine(); } bw.close(); br.close(); } catch (Exception e) { e.printStackTrace(); } } }
无敌lcw 2013-11-28
  • 打赏
  • 举报
回复 1
引用 9 楼 develop_design_level 的回复:
[quote=引用 8 楼 u012969137 的回复:] import org.apache.commons.io.IOUtils;//这个是http://commons.apache.org/proper/commons-io/ ,自己去下载。 import com.alibaba.fastjson.JSON;//这个是 https://github.com/alibaba/fastjson ,自己去下载 这里报错了。。。。。。。
上面为啥报错,你看不明白?你在看不明白,只能问你学过java么?[/quote] LZ初学,不会添加这些,还是教他用自带的方法做吧
  • 打赏
  • 举报
回复


/**
 * <pre>
 * @author kanpiaoxue
 * Date 2013-11-27
 * </pre>
 */
public class Student {
	private String name;
	private int age;
	private double javaScore;
	private double cScore;

	public Student() {
		super();
	}

	public Student(String name, int age, double javaScore, double cScore) {
		super();
		this.name = name;
		this.age = age;
		this.javaScore = javaScore;
		this.cScore = cScore;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public double getJavaScore() {
		return javaScore;
	}

	public void setJavaScore(double javaScore) {
		this.javaScore = javaScore;
	}

	public double getCScore() {
		return cScore;
	}

	public void setCScore(double cScore) {
		this.cScore = cScore;
	}

}



import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.io.IOUtils;

import com.alibaba.fastjson.JSON;

/**
 * <pre>
 * @author kanpiaoxue
 * Date 2013-11-27
 * </pre>
 */
public class TestChengji {
	private static final String DATA_FILE = "D:\\tmp\\students.txt";

	/**
	 * <pre>
	 * 连续提问学生的姓名,年龄,java成绩,C成绩。当输入stop的时候,结束,并计算结果
	 * </pre>
	 * 
	 * @throws Exception
	 */
	public static void main(String[] args) throws Exception {
		TestChengji t = new TestChengji();
		List<Student> students = t.createStudents();
		t.saveStudentsToFile(students);
		students = t.readStudentsFromFile();
		t.calculateStudents(students);
		/**
		 * <pre>
		 * 
		 * 下面是程序的运行结果:
		 * 
		 * Please enter student name :student1
		 * Please enter student age :20
		 * Please enter student java score :98
		 * Please enter student C score :89
		 * Do you continue enter student infomation? (yes/no) : yes
		 * Please enter student name :student2
		 * Please enter student age :20
		 * Please enter student java score :90
		 * Please enter student C score :88
		 * Do you continue enter student infomation? (yes/no) : yes
		 * Please enter student name :student3
		 * Please enter student age :20
		 * Please enter student java score :85
		 * Please enter student C score :85
		 * Do you continue enter student infomation? (yes/no) : no
		 * stop enter students infomation.
		 * write datas to D:\tmp\students.txt successfully!
		 * start reading students infomation from D:\tmp\students.txt
		 * 3 students java average score : 91.0, c average score : 87.33333333333333
		 * 
		 * </pre>
		 */
	}

	/**
	 * @param reader
	 * @return
	 * @throws Exception
	 *             创建学生。 这里呢,我没有给你校验学生的age,javaScore,cScore的合法性。你可以自己进行校验。
	 */
	private Student createStudent(BufferedReader reader) throws Exception {
		System.out.print("Please enter student name :");
		String str = null;
		Student student = new Student();
		str = reader.readLine();
		student.setName(str);
		System.out.print("Please enter student age :");
		str = reader.readLine();
		student.setAge(Integer.valueOf(str));

		System.out.print("Please enter student java score :");
		str = reader.readLine();
		student.setJavaScore(Double.valueOf(str));

		System.out.print("Please enter student C score :");
		str = reader.readLine();
		student.setCScore(Double.valueOf(str));

		return student;
	}

	private List<Student> createStudents() {
		List<Student> list = new ArrayList<Student>();
		BufferedReader reader = null;
		try {
			reader = new BufferedReader(new InputStreamReader(System.in));
			Student student = createStudent(reader);
			list.add(student);

			System.out
					.print("Do you continue enter student infomation? (yes/no) : ");
			String str = reader.readLine();
			if (str.trim().equalsIgnoreCase("no")
					|| str.trim().equalsIgnoreCase("n")) {
				System.out.println("stop enter students infomation.");
				return list;
			} else {
				List<Student> l = createStudents();
				list.addAll(l);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (null != reader) {
				try {
					reader.close();
				} catch (IOException e) {
				}
			}
		}
		return list;
	}

	private void saveStudentsToFile(List<Student> students) throws Exception {
		File f = new File(DATA_FILE);
		f.delete();
		f.createNewFile();
		if (f.isFile()) {
			FileWriter writer = new FileWriter(f);
			for (Student s : students) {
				String json = JSON.toJSONString(s);
				writer.write(json + "\n");
			}
			writer.flush();
			writer.close();
			System.out.println("write datas to " + f + " successfully!");
		} else {
			throw new IllegalArgumentException("please check file " + f);
		}

	}

	private List<Student> readStudentsFromFile() throws Exception {
		File f = new File(DATA_FILE);
		System.out.println("start reading students infomation from " + f);
		@SuppressWarnings("unchecked")
		List<String> lines = IOUtils.readLines(new FileInputStream(f));
		List<Student> list = new ArrayList<Student>();
		for (String str : lines) {
			Student s = JSON.parseObject(str, Student.class);
			list.add(s);
		}
		return list;
	}

	private void calculateStudents(List<Student> students) {
		double javaSum = 0D;
		double cSum = 0D;
		for (Student s : students) {
			javaSum += s.getJavaScore();
			cSum += s.getCScore();
		}
		int size = students.size();
		System.out.println(size + " students java average score : "
				+ (javaSum / size) + ", c average score : " + (cSum / size));
	}
}
末日哥 2013-11-27
  • 打赏
  • 举报
回复
先写吧,在不断的错误中寻求答案会让你记忆深刻,再遇到困难再贴你的代码过来
逆袭LWJ 2013-11-27
  • 打赏
  • 举报
回复
能不能给个大概的框架给我
  • 打赏
  • 举报
回复
引用 2 楼 u012969137 的回复:
[quote=引用 1 楼 cl61917380 的回复:] scanner,BufferInputStream,BufferOutPutStream
嗯,就是现在对这些还有点混淆。。。。[/quote] 不是混乱吧?这写都是java的基础的东西。
逆袭LWJ 2013-11-27
  • 打赏
  • 举报
回复
引用 1 楼 cl61917380 的回复:
scanner,BufferInputStream,BufferOutPutStream
嗯,就是现在对这些还有点混淆。。。。
coooliang 2013-11-27
  • 打赏
  • 举报
回复
scanner,BufferInputStream,BufferOutPutStream
wuer0520 2013-11-27
  • 打赏
  • 举报
回复
有思路的话就先去写!就是流,输入输出流是相对于程序来说的,在程序中写FileOutputStream("xx.txt");就是在程序和文件中间插了一条管道,由程序向文件输出
  • 打赏
  • 举报
回复
引用 8 楼 u012969137 的回复:
import org.apache.commons.io.IOUtils;//这个是http://commons.apache.org/proper/commons-io/ ,自己去下载。 import com.alibaba.fastjson.JSON;//这个是 https://github.com/alibaba/fastjson ,自己去下载 这里报错了。。。。。。。
上面为啥报错,你看不明白?你在看不明白,只能问你学过java么?
逆袭LWJ 2013-11-27
  • 打赏
  • 举报
回复
import org.apache.commons.io.IOUtils; import com.alibaba.fastjson.JSON; 这里报错了。。。。。。。
逆袭LWJ 2013-11-27
  • 打赏
  • 举报
回复
引用 6 楼 develop_design_level 的回复:


/**
 * <pre>
 * @author kanpiaoxue
 * Date 2013-11-27
 * </pre>
 */
public class Student {
	private String name;
	private int age;
	private double javaScore;
	private double cScore;

	public Student() {
		super();
	}

	public Student(String name, int age, double javaScore, double cScore) {
		super();
		this.name = name;
		this.age = age;
		this.javaScore = javaScore;
		this.cScore = cScore;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public double getJavaScore() {
		return javaScore;
	}

	public void setJavaScore(double javaScore) {
		this.javaScore = javaScore;
	}

	public double getCScore() {
		return cScore;
	}

	public void setCScore(double cScore) {
		this.cScore = cScore;
	}

}



import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.io.IOUtils;

import com.alibaba.fastjson.JSON;

/**
 * <pre>
 * @author kanpiaoxue
 * Date 2013-11-27
 * </pre>
 */
public class TestChengji {
	private static final String DATA_FILE = "D:\\tmp\\students.txt";

	/**
	 * <pre>
	 * 连续提问学生的姓名,年龄,java成绩,C成绩。当输入stop的时候,结束,并计算结果
	 * </pre>
	 * 
	 * @throws Exception
	 */
	public static void main(String[] args) throws Exception {
		TestChengji t = new TestChengji();
		List<Student> students = t.createStudents();
		t.saveStudentsToFile(students);
		students = t.readStudentsFromFile();
		t.calculateStudents(students);
		/**
		 * <pre>
		 * 
		 * 下面是程序的运行结果:
		 * 
		 * Please enter student name :student1
		 * Please enter student age :20
		 * Please enter student java score :98
		 * Please enter student C score :89
		 * Do you continue enter student infomation? (yes/no) : yes
		 * Please enter student name :student2
		 * Please enter student age :20
		 * Please enter student java score :90
		 * Please enter student C score :88
		 * Do you continue enter student infomation? (yes/no) : yes
		 * Please enter student name :student3
		 * Please enter student age :20
		 * Please enter student java score :85
		 * Please enter student C score :85
		 * Do you continue enter student infomation? (yes/no) : no
		 * stop enter students infomation.
		 * write datas to D:\tmp\students.txt successfully!
		 * start reading students infomation from D:\tmp\students.txt
		 * 3 students java average score : 91.0, c average score : 87.33333333333333
		 * 
		 * </pre>
		 */
	}

	/**
	 * @param reader
	 * @return
	 * @throws Exception
	 *             创建学生。 这里呢,我没有给你校验学生的age,javaScore,cScore的合法性。你可以自己进行校验。
	 */
	private Student createStudent(BufferedReader reader) throws Exception {
		System.out.print("Please enter student name :");
		String str = null;
		Student student = new Student();
		str = reader.readLine();
		student.setName(str);
		System.out.print("Please enter student age :");
		str = reader.readLine();
		student.setAge(Integer.valueOf(str));

		System.out.print("Please enter student java score :");
		str = reader.readLine();
		student.setJavaScore(Double.valueOf(str));

		System.out.print("Please enter student C score :");
		str = reader.readLine();
		student.setCScore(Double.valueOf(str));

		return student;
	}

	private List<Student> createStudents() {
		List<Student> list = new ArrayList<Student>();
		BufferedReader reader = null;
		try {
			reader = new BufferedReader(new InputStreamReader(System.in));
			Student student = createStudent(reader);
			list.add(student);

			System.out
					.print("Do you continue enter student infomation? (yes/no) : ");
			String str = reader.readLine();
			if (str.trim().equalsIgnoreCase("no")
					|| str.trim().equalsIgnoreCase("n")) {
				System.out.println("stop enter students infomation.");
				return list;
			} else {
				List<Student> l = createStudents();
				list.addAll(l);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (null != reader) {
				try {
					reader.close();
				} catch (IOException e) {
				}
			}
		}
		return list;
	}

	private void saveStudentsToFile(List<Student> students) throws Exception {
		File f = new File(DATA_FILE);
		f.delete();
		f.createNewFile();
		if (f.isFile()) {
			FileWriter writer = new FileWriter(f);
			for (Student s : students) {
				String json = JSON.toJSONString(s);
				writer.write(json + "\n");
			}
			writer.flush();
			writer.close();
			System.out.println("write datas to " + f + " successfully!");
		} else {
			throw new IllegalArgumentException("please check file " + f);
		}

	}

	private List<Student> readStudentsFromFile() throws Exception {
		File f = new File(DATA_FILE);
		System.out.println("start reading students infomation from " + f);
		@SuppressWarnings("unchecked")
		List<String> lines = IOUtils.readLines(new FileInputStream(f));
		List<Student> list = new ArrayList<Student>();
		for (String str : lines) {
			Student s = JSON.parseObject(str, Student.class);
			list.add(s);
		}
		return list;
	}

	private void calculateStudents(List<Student> students) {
		double javaSum = 0D;
		double cSum = 0D;
		for (Student s : students) {
			javaSum += s.getJavaScore();
			cSum += s.getCScore();
		}
		int size = students.size();
		System.out.println(size + " students java average score : "
				+ (javaSum / size) + ", c average score : " + (cSum / size));
	}
}
谢谢develop_design_level老师的指导,我会好好研究的!

62,632

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧