黑马入学测试自己写的答案(一)

本程序通过键盘接收学生信息,包括姓名及三门课程的成绩,并按照总分高低对学生信息进行排序,最后将排序后的信息保存至名为“student.txt”的文件中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.itheima2.com;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Iterator;
import java.util.TreeSet;

public class Test1
{
	/**
	 * 有五个学生,每个学生有3门课(语文、数学、英语)的成绩,写一个程序接收从键盘输入学生的信息,
	 * 输入格式为:name,30,30,30(姓名,三门课成绩), 然后把输入的学生信息按总分从高到低的顺序写入到一个名称"stu.txt"文件中。
	 * 要求:stu.txt文件的格式要比较直观,打开这个文件,就可以很清楚的看到学生的信息。
	 * 
	 * @param args
	 * @throws Exception
	 */
	public static void main(String[] args) throws Exception
	{
		// 1.定义一个学生类。
		// 2.读入学生信息
		// 3.给学生按照总分排序。
		// 4.保存为txt文件。

		// 获取到集合元素
		TreeSet<Student> set = getStudent();
		Iterator<Student> it = set.iterator();
		while (it.hasNext())
		{
			Student stu = it.next();	
			SaveTXT(stu.getstr());
		}
		// 遍历集合然后打印

	}

	/**
	 * 输入学生文本
	 * 
	 * @return
	 * @return
	 */
	public static TreeSet<Student> getStudent() throws Exception
	{
		System.out.println("输入学生信息");
		// 设置装学生的集合
		TreeSet<Student> setStu = new TreeSet<Student>();

		BufferedReader bfReader = new BufferedReader(new InputStreamReader(
				System.in));
		String str = "";
		Student stu;
		String [] stuarry;
	    while(!(str= bfReader.readLine()).equals("q"))
		{
			// 获取到字符串要进行过滤
			stu = new Student();
			stuarry = str.split(",");	
			stu.name = stuarry[0];
			stu.china = Integer.parseInt(stuarry[1]);
			stu.math = Integer.parseInt(stuarry[2]);
			stu.english = Integer.parseInt(stuarry[3]);
			System.out.println(stuarry[0]);
			stu.getScores();// 计算总分
			setStu.add(stu);// 添加到集合里面去
		}
		return setStu;
	}

	/**
	 * 保存到文件当中
	 * 
	 * @throws IOException
	 */
	public static boolean SaveTXT(String txt) throws IOException
	{
		// 我不知道有多少但是我就不断的写入
		BufferedWriter bufWri = new BufferedWriter(new FileWriter(
				"student.txt", true));
		// 写入到文本
		bufWri.write(txt);
		bufWri.newLine();
		bufWri.flush();
		
		return true;
	}
}

/**
 * 学生类 ,并且让这个集合具有比较性
 * 
 * @author tianshenjiaoao
 * 
 */
class Student implements Comparable<Student>
{
	String name; // 姓名
	int china; // 语文
	int math; // 数学
	int english; // 英语

	int scores; // 总分

	Student()
	{

	}

	// 元素具有比较性。 这里可以重新设置测试TreSet的自然比较条件
	public int compareTo(Student o)
	{
		if (this.scores > o.scores)
		{
			return 1;
		} else if (this.scores< o.scores)
		{
			return -1;

		} else
		{
			return 0;
		}
	}

	/*
	 * 计算总分
	 */
	public void getScores()
	{
		this.scores = this.math + this.china + this.english;
	}

	/**
	 * 把所有内容都转化成为字符串
	 * 
	 * @return
	 */
	public String getstr()
	{
		return this.name + " | " + this.china + " | " + this.math + " | "
				+ this.english + "总分:" + this.scores;
	}
}

有五个学生,每个学生有3门课(语文、数学、英语)的成绩,写一个程序接收从键盘输入学生的信息,

输入格式为:name,30,30,30(姓名,三门课成绩), 然后把输入的学生信息按总分从高到低的顺序写入到一个名称"stu.txt"文件中。要求:stu.txt文件的格式要比较直观,打开这个文件,就可以很清楚的看到学生的信息。


黑马程序员训练营入学考试题 1、方法中的内部类能不能访问方法中的局部变量,为什么? 2、编个类,在main方法中定义个Map对象(采用泛型),加入若干个对象,然后遍历并打印出各元素的key和value。 3、取出个字符串中字母出现的次数。如:字符串:"abcdekka27qoq" ,输出格式为:a(2)b(1)k(2)... 4、有五个学生,每个学生有3门课(语文、数学、英语)的成绩,个程序接收从键盘输入学生的信息,输入格式为:name,30,30,30(姓名,三门课成绩),然后把输入的学生信息按总分从高到低的顺序入到个名称"stu.txt"文件中。要求:stu.txt文件的格式要比较直观,打开这个文件,就可以很清楚的看到学生的信息。 5、编个程序,获取10个1至20的随机数,要求随机数不能重复。 6、编三各类Ticket、SealWindow、TicketSealCenter分别代表票信息、售票窗口、售票中心。售票中心分配定数量的票,由若干个售票窗口进行出售,利用你所学的线程知识来模拟此售票过程。 7、方法,打印等长的二维数组,要求从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。 如: n = 4 则打印: 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 ? 8、编个程序,它先将键盘上输入的个字符串转换成十进制整数,然后打印出这个十进制整数对应的二进制形式。这个程序要考虑输入的字符串不能转换成个十进制整数的情况,并对转换失败的原因要区分出是数字太大,还是其中包含有非数字字符的情况。提示:十进制数转二进制数的方式是用这个数除以2,余数就是二进制数的最低位,接着再用得到的商作为被除数去除以2,这次得到的余数就是次低位,如此循环,直到被除数为0为止。其实,只要明白了打印出个十进制数的每位的方式(不断除以10,得到的余数就分别是个位,十位,百位),就很容易理解十进制数转二进制数的这种方式。 9、28人买可乐喝,3个可乐瓶盖可以换瓶可乐,那么要买多少瓶可乐,够28人喝?假如是50人,又需要买多少瓶可乐?(需出分析思路) 10、有100个人围成个圈,从1开始报数,报到14的这个人就要退出。然后其他人重新开始,从1报数,到14退出。问:最后剩下的是100人中的第几个人?
1、 ArrayList<Integer> list = new ArrayList<Integer>(); 在这个泛型为Integer的ArrayList中存放个String类型的对象。 2、 编个类,在main方法中定义个Map对象(采用泛型),加入若干个对象,然后遍历并打印出各元素的key和value。 3、 方法中的内部类能不能访问方法中的局部变量,为什么? 4、 定义个交通灯枚举,包含红灯、绿灯、黄灯,需要有获得下个灯的方法,例如:红灯获取下个灯是绿灯,绿灯获取下个灯是黄灯。 5、 编个类,增加个实例方法用于打印条字符串。并使用反射手段创建该类的对象, 并调用该对象中的方法。 6、 把当前文件中的所有文本拷贝,存入个txt文件,统计每个字符出现的次数并输出,例如: a: 21 次 b: 15 次 c:: 15 次 把: 7 次 当: 9 次 前: 3 次 ,:30 次 7、 将字符串中进行反转。abcde --> edcba 8、 编程序,循环接收用户从键盘输入多个字符串,直到输入“end”时循环结束,并将所有已输入的字符串按字典顺序倒序打印。 9、 方法,打印等长的二维数组,要求从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。 如: n = 4 则打印: 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 10、 28人买可乐喝,3个可乐瓶盖可以换瓶可乐,那么要买多少瓶可乐,够28人喝?假如是50人,又需要买多少瓶可乐?(需出分析思路)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值