62,616
社区成员
发帖
与我相关
我的任务
分享
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.TreeSet;
public class N {
/**
* 本来想让楼主自己根据10楼的提示自己做一下来着。
* 但是,楼主一直都不结贴。
* 所以,还是打算“害”一下楼主,帮他把具体代码贴出来吧。
*/
public static void main(String[] args) {
System.out.println("1. 编程生成10个1~100之间的随机数,并统计每个数出现的频率。");
System.out.println("注意:应该是频率而非概率。概率不用统计,应该是个固定的数。");
fun1();
System.out.println("\n2. 编写一个程序,使用Map实现对学生成绩单的存储和查询,并将成绩排序存储到TreeSet中,求出平均成绩、最高分和最低分。");
fun2();
try {
System.out.println("\n4. 编写一个程序,在其中调用操作系统的注册表编辑器”regedit.exe”。");
System.out.println("由于有控制台的IO操纵,所以,会有IO异常抛出。");
fun4();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("\n5. 使用java.text.SimpleDateFormat类将系统日期格式化为”2007年8月20日”的形式输出。");
fun5();
System.out.println("\n6. 编写程序实现:定义一个Float类型的数组,随机往其中填充元素,并打印该数组内容。");
fun6();
}
/**
* 1. 编程生成10个1~100之间的随机数,并统计每个数出现的频率。
*/
private static void fun1() {
Random rand = new Random();
final int size = 10;
Map<Integer,Integer> count = new HashMap<Integer,Integer>();//<随机数,出现的次数>
for(int i=0;i<size;i++){
int ri = rand.nextInt(100)+1;//取1~100之间的随机数,包含1和100.
Integer c = count.get(ri);
if(c==null)count.put(ri, 1);
else count.put(ri, c+1);
}
//显示统计结果
for(Map.Entry<Integer, Integer> e : count.entrySet()){
System.out.println(e.getKey()+"\t"+e.getValue());
}
}
/**
* 2. 编写一个程序,使用Map实现对学生成绩单的存储和查询,
* 并将成绩排序存储到TreeSet中,求出平均成绩、最高分和最低分。
*/
private static void fun2() {
/**
* 学生信息的封装类
*/
class StuInfo implements Comparable<StuInfo>{
String number;//学号
float score;//成绩
public int compareTo(StuInfo o) {
if(o!=null){
if(o.score==score)return 0;
if(score>o.score)return 1;
}
return -1;
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null) return false;
if (obj instanceof StuInfo) {
StuInfo o = (StuInfo) obj;
return number.equals(o.number);
}
return false;
}
@Override
public String toString() {
return "学号:"+number+"\t成绩:"+score;
}
}
/**
* 关于学生信息操作的处理类
*/
class Stat{
Map<String, StuInfo> infos = new HashMap<String, StuInfo>();
TreeSet<StuInfo> sorted = new TreeSet<StuInfo>();
double total;
public void save(StuInfo info) {//学生信息的存储
infos.put(info.number, info);
sorted.add(info);
total +=info.score;
}
public StuInfo query(String StuNO){//根据学号查询学生信息
return infos.get(StuNO);
}
public float queryScore(String StuNO){//根据学号查询学生成绩
return infos.get(StuNO).score;
}
public float getAvg(){//求平均成绩
return (float)total/sorted.size();
}
public float getMin(){//求最低分
return sorted.first().score;
}
public float getMax(){//求最高分
return sorted.last().score;
}
}
//简单测试一下上述两个类
Stat stat = new Stat();
Random rand = new Random();
for(int i=1;i<=10;i++){
StuInfo info = new StuInfo();
info.number="20090714"+i;
info.score= rand.nextFloat()*100;
System.out.println(info);
stat.save(info);
}
System.out.println("查询:200907145");
System.out.println(stat.query("200907145"));
System.out.println(stat.queryScore("200907145"));
System.out.println("平均成绩");
System.out.println(stat.getAvg());
System.out.println("最高分");
System.out.println(stat.getMax());
System.out.println("最低分");
System.out.println(stat.getMin());
}
/**
* 4. 编写一个程序,在其中调用操作系统的注册表编辑器”regedit.exe”。
* @throws IOException
*/
private static void fun4() throws IOException {
Runtime.getRuntime().exec("regedit.exe");
}
/**
* 5. 使用java.text.SimpleDateFormat类将系统日期格式化为”2007年8月20日”的形式输出。
*/
private static void fun5() {
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy年M月dd日");
String dateString = sdf.format(new java.util.Date());
System.out.println(dateString);
}
/**
* 6. 编写程序实现:定义一个Float类型的数组,随机往其中填充元素,并打印该数组内容。
*/
private static void fun6() {
final int size = 10;
Float array [] = new Float[size];
Random rand = new Random();
for(int i=0;i<array.length;i++){
array[i]=rand.nextFloat();
}
for(float f:array){
System.out.println(f);
}
}
}