急急!一道程序题, 请各位帮帮忙!!散分!!!!

时间:2023-02-22 00:08:47
用Java编写程序:
利用随机数产生1000个0~100之间的考试分数,将其存入一个文本文件中,然后程序从这个文件中读取这1000个考试分数,统计其中各分数段(A[90,100],B[80,90), C[70,80), D[60,70), F[0,60))的人数、所占百分比,平均分。
提示:产生随机数可以用Random类(可以产生0—100之间的任意数)



26 个解决方案

#1


你都知道怎么做了啊,哈哈

#2


不知道啊 ,我们刚学文件输入输出, 学得不好呀,这是上机题, 帮帮咯!

#3


引用 1 楼 mscf 的回复:
你都知道怎么做了啊,哈哈

有提示嘛

#4


自己做才能有提高

#5


Random类

数组

你都知道了,怎么不动下脑勒!

欢迎加入 JAVA交流群 72923840

#6


Random类

数组

你都知道了,怎么不动下脑勒!

欢迎加入 JAVA交流群 72923840

#7


先产生1000个0-100随机数,遍历一遍把他们分组统计个数,直接就算出人数、所占百分比,平均分了.
提示已经很明白了.
LZ应该自己写代码. 

#8


好的, 知道了, 谢谢!

#9


给你提示啊:

    //定义几个变量分别代表5个成绩段的人数
    int a = 0, b = 0, c = 0, d = 0, e = 0;
    //产生随机数: 
    Random rnd = new Random();
    int i = rnd.nextInt(101); //产生0~100之间的随机数
    //往文件里面写可以使用DataOutputStream,一个一个挨着写
    DataOutputStream dos = new DataOutputStream( new FileOutputStream("file name"));
    dos.writeInt(i);
    //读取的时候用DataInputStream ,一个一个读
   定义一个数组:int[] all = new int[1000];
   int j = 0;
    DataInputStream dis = new DataInputStream ( new FileInputStream("file name") );
    all[j] = dis.readInt();//注意,别读过界了哦
    
    //读出来的时候判断这个成绩是属于哪中情况的,就把相应的变量加1
   然后在分析判断百分比啊,平均分什么的

#10


引用 9 楼 qusic 的回复:
给你提示啊: 
Java code

    //定义几个变量分别代表5个成绩段的人数
    int a = 0, b = 0, c = 0, d = 0, e = 0;
    //产生随机数: 
    Random rnd = new Random();
    int i = rnd.nextInt(101); //产生0~100之间的随机数
    //往文件里面写可以使用DataOutputStream,一个一个挨着写
    DataOutputStream dos = new DataOutputStream( new FileOutputStream("file name"));
    dos.writeInt(i);
    //读取的时候用…

顶楼上的

#11


我再详细地给你一个参考的思路,代码还是要自己写哈!

首先,利用file类新建个文本文件,

利用random函数随机出100个函数,可以写个循环,循环100次,

循环体里写文件(需要用try-catch),简单点可以每次写一行,一行就一个数字,这样,后面读的时候一行一行读也方便。。

100个随机数都在文本里后,再新建一个100个长度的int数组和5个int数组(分别存放A-F段的数据),

利用读文件的readinLine()函数读出100个随机数,先转换成数字,再判断数字大小分别放在A-F的INT数组里(SWITCH)

"统计其中各分数段(A[90,100],B[80,90), C[70,80), D[60,70), F[0,60))的人数、所占百分比,平均分"

这个根据数组就可以计算了。

#12


mark

#13


mark

#14


up

#15


自己先写一点嘛,如果有错误可以问,自己动手会有很多收获的。

#16


该回复于2009-03-22 20:22:35被版主删除

#17


跟着up了

#18


写程序太懒了相当不好

#19


jffffffffffffffffffffffffffffffffffffffffffffffffffff

#20


首先用Random类随机产生一个数字,然后把它存入文本文件中。

在for循环1000便上面的过程


...

#21





package com.train.first;

import java.util.ArrayList;
import java.util.List;

public class Test
{
private static final int AMOUNT = 1000;

private static List<Group> groups;

private static int[] scores = new int[AMOUNT];

/**
 * 初始化分组信息
 * @param group
 */
private static void initGroup()
{
groups = new ArrayList<Group>();
groups.add(new Group("ALL"));
groups.add(new Group("A"));
groups.add(new Group("B"));
groups.add(new Group("C"));
groups.add(new Group("D"));
groups.add(new Group("F"));
}

/**
 * 根据分数进行分组
 * @param score
 */
private static void doGroup(int score)
{
groups.get(0).add(score);

if (score >= 90)
{
groups.get(1).add(score);
}
else if (score >= 80)
{
groups.get(2).add(score);
}
else if (score >= 70)
{
groups.get(3).add(score);
}
else if (score >= 60)
{
groups.get(4).add(score);
}
else
{
groups.get(5).add(score);
}
}

/**
 * 获取[start,end]中的一个随即整数
 * @param start
 * @param end
 * @return
 */
private static int getRandom(int start, int end)
{
return Double.valueOf(Math.random() * (end - start + 1)).intValue() + start;
}

public static void main(String[] args)
{
//省略了文件读写
//...

for (int i = 0; i < AMOUNT; i ++)
{
scores[i] = getRandom(0, 100);
}

initGroup();

for (int i = 0; i < scores.length; i++)
{
doGroup(scores[i]);
}

System.out.println(groups.get(0).getAverage()); //总平均分
System.out.println(groups.get(1).getAmount()); //A等级的人数
System.out.println(groups.get(2).getSum()); //B等级的总分
System.out.println(groups.get(3).getPercent(AMOUNT));  //C等级所占百分比
System.out.println(groups.get(4).getAverage()); //D等级的平均分
System.out.println(groups.get(5).getPercent(AMOUNT)); //F等级所占百分比
}
}

class Group
{
private String name;

private int amount = 0;

private int sum = 0;

/**
 * 增加一个符合条件的分数
 * @param score
 */
public void add(int score)
{
amount += 1;
sum += score;
}

/**
 * 获取平均分
 * @return
 */
public int getAverage()
{
if (amount == 0)
{
return 0;
}

return sum / amount;
}

/**
 * 获取所占百分比
 * @param totalAmount
 * @return
 */
public int getPercent(int totalAmount)
{
return amount * 100 / totalAmount;
}

public Group(String name)
{
this.name = name;
}

public int getAmount()
{
return amount;
}

public void setAmount(int amount)
{
this.amount = amount;
}

public String getName()
{
return name;
}

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

public int getSum()
{
return sum;
}

public void setSum(int sum)
{
this.sum = sum;
}
}













#22



package com.ztk.csdn;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.util.Random;

public class RandomTest {

/**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] score =  new int[1000];
Random rd = new Random();
for(int i=0;i<score.length;i++){
score[i] = rd.nextInt(100);
}
String str = "";
for(int i=0;i<score.length;i++){
str+=score[i]+",";
}

str = str.substring(0, score.length-1);
try {
FileWriter fw = new FileWriter("D://test.txt");
fw.write(str);
fw.close();
} catch (Exception e) {
e.printStackTrace();
}  
StringBuffer buffer = new StringBuffer(); 
try {
//FileReader fr = new FileReader("D://test.txt");
BufferedReader bufferreader = new BufferedReader(new InputStreamReader(new FileInputStream("D://test.txt"))); 


String line = bufferreader.readLine();
while (line !=null) {
buffer.append(line);
line = bufferreader.readLine(); // 读取下一行 
}


} catch (Exception e) {
e.printStackTrace();
}
//System.out.print(buffer.toString());
String scoreString = buffer.toString();
String[] scoreStringArr = scoreString.split(",");
int[] scoreStringArrInt = new int[scoreStringArr.length];
for(int i=0;i<scoreStringArr.length;i++){
scoreStringArrInt[i]=Integer.parseInt(scoreStringArr[i]);
}

int count1=0;
int count2=0;
for(int i=0;i<scoreStringArrInt.length;i++){
if(scoreStringArrInt[i]>=90&&scoreStringArrInt[i]<=100){
count1++;
}
}
}

}




剩下的,lz自己补充!

#23


该回复于2008-11-05 18:43:44被版主删除

#24


谢谢各位了!

#25


真的谢谢各位了!

#26


靠,发现现在遍地都是广告了!

#1


你都知道怎么做了啊,哈哈

#2


不知道啊 ,我们刚学文件输入输出, 学得不好呀,这是上机题, 帮帮咯!

#3


引用 1 楼 mscf 的回复:
你都知道怎么做了啊,哈哈

有提示嘛

#4


自己做才能有提高

#5


Random类

数组

你都知道了,怎么不动下脑勒!

欢迎加入 JAVA交流群 72923840

#6


Random类

数组

你都知道了,怎么不动下脑勒!

欢迎加入 JAVA交流群 72923840

#7


先产生1000个0-100随机数,遍历一遍把他们分组统计个数,直接就算出人数、所占百分比,平均分了.
提示已经很明白了.
LZ应该自己写代码. 

#8


好的, 知道了, 谢谢!

#9


给你提示啊:

    //定义几个变量分别代表5个成绩段的人数
    int a = 0, b = 0, c = 0, d = 0, e = 0;
    //产生随机数: 
    Random rnd = new Random();
    int i = rnd.nextInt(101); //产生0~100之间的随机数
    //往文件里面写可以使用DataOutputStream,一个一个挨着写
    DataOutputStream dos = new DataOutputStream( new FileOutputStream("file name"));
    dos.writeInt(i);
    //读取的时候用DataInputStream ,一个一个读
   定义一个数组:int[] all = new int[1000];
   int j = 0;
    DataInputStream dis = new DataInputStream ( new FileInputStream("file name") );
    all[j] = dis.readInt();//注意,别读过界了哦
    
    //读出来的时候判断这个成绩是属于哪中情况的,就把相应的变量加1
   然后在分析判断百分比啊,平均分什么的

#10


引用 9 楼 qusic 的回复:
给你提示啊: 
Java code

    //定义几个变量分别代表5个成绩段的人数
    int a = 0, b = 0, c = 0, d = 0, e = 0;
    //产生随机数: 
    Random rnd = new Random();
    int i = rnd.nextInt(101); //产生0~100之间的随机数
    //往文件里面写可以使用DataOutputStream,一个一个挨着写
    DataOutputStream dos = new DataOutputStream( new FileOutputStream("file name"));
    dos.writeInt(i);
    //读取的时候用…

顶楼上的

#11


我再详细地给你一个参考的思路,代码还是要自己写哈!

首先,利用file类新建个文本文件,

利用random函数随机出100个函数,可以写个循环,循环100次,

循环体里写文件(需要用try-catch),简单点可以每次写一行,一行就一个数字,这样,后面读的时候一行一行读也方便。。

100个随机数都在文本里后,再新建一个100个长度的int数组和5个int数组(分别存放A-F段的数据),

利用读文件的readinLine()函数读出100个随机数,先转换成数字,再判断数字大小分别放在A-F的INT数组里(SWITCH)

"统计其中各分数段(A[90,100],B[80,90), C[70,80), D[60,70), F[0,60))的人数、所占百分比,平均分"

这个根据数组就可以计算了。

#12


mark

#13


mark

#14


up

#15


自己先写一点嘛,如果有错误可以问,自己动手会有很多收获的。

#16


该回复于2009-03-22 20:22:35被版主删除

#17


跟着up了

#18


写程序太懒了相当不好

#19


jffffffffffffffffffffffffffffffffffffffffffffffffffff

#20


首先用Random类随机产生一个数字,然后把它存入文本文件中。

在for循环1000便上面的过程


...

#21





package com.train.first;

import java.util.ArrayList;
import java.util.List;

public class Test
{
private static final int AMOUNT = 1000;

private static List<Group> groups;

private static int[] scores = new int[AMOUNT];

/**
 * 初始化分组信息
 * @param group
 */
private static void initGroup()
{
groups = new ArrayList<Group>();
groups.add(new Group("ALL"));
groups.add(new Group("A"));
groups.add(new Group("B"));
groups.add(new Group("C"));
groups.add(new Group("D"));
groups.add(new Group("F"));
}

/**
 * 根据分数进行分组
 * @param score
 */
private static void doGroup(int score)
{
groups.get(0).add(score);

if (score >= 90)
{
groups.get(1).add(score);
}
else if (score >= 80)
{
groups.get(2).add(score);
}
else if (score >= 70)
{
groups.get(3).add(score);
}
else if (score >= 60)
{
groups.get(4).add(score);
}
else
{
groups.get(5).add(score);
}
}

/**
 * 获取[start,end]中的一个随即整数
 * @param start
 * @param end
 * @return
 */
private static int getRandom(int start, int end)
{
return Double.valueOf(Math.random() * (end - start + 1)).intValue() + start;
}

public static void main(String[] args)
{
//省略了文件读写
//...

for (int i = 0; i < AMOUNT; i ++)
{
scores[i] = getRandom(0, 100);
}

initGroup();

for (int i = 0; i < scores.length; i++)
{
doGroup(scores[i]);
}

System.out.println(groups.get(0).getAverage()); //总平均分
System.out.println(groups.get(1).getAmount()); //A等级的人数
System.out.println(groups.get(2).getSum()); //B等级的总分
System.out.println(groups.get(3).getPercent(AMOUNT));  //C等级所占百分比
System.out.println(groups.get(4).getAverage()); //D等级的平均分
System.out.println(groups.get(5).getPercent(AMOUNT)); //F等级所占百分比
}
}

class Group
{
private String name;

private int amount = 0;

private int sum = 0;

/**
 * 增加一个符合条件的分数
 * @param score
 */
public void add(int score)
{
amount += 1;
sum += score;
}

/**
 * 获取平均分
 * @return
 */
public int getAverage()
{
if (amount == 0)
{
return 0;
}

return sum / amount;
}

/**
 * 获取所占百分比
 * @param totalAmount
 * @return
 */
public int getPercent(int totalAmount)
{
return amount * 100 / totalAmount;
}

public Group(String name)
{
this.name = name;
}

public int getAmount()
{
return amount;
}

public void setAmount(int amount)
{
this.amount = amount;
}

public String getName()
{
return name;
}

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

public int getSum()
{
return sum;
}

public void setSum(int sum)
{
this.sum = sum;
}
}













#22



package com.ztk.csdn;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.util.Random;

public class RandomTest {

/**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] score =  new int[1000];
Random rd = new Random();
for(int i=0;i<score.length;i++){
score[i] = rd.nextInt(100);
}
String str = "";
for(int i=0;i<score.length;i++){
str+=score[i]+",";
}

str = str.substring(0, score.length-1);
try {
FileWriter fw = new FileWriter("D://test.txt");
fw.write(str);
fw.close();
} catch (Exception e) {
e.printStackTrace();
}  
StringBuffer buffer = new StringBuffer(); 
try {
//FileReader fr = new FileReader("D://test.txt");
BufferedReader bufferreader = new BufferedReader(new InputStreamReader(new FileInputStream("D://test.txt"))); 


String line = bufferreader.readLine();
while (line !=null) {
buffer.append(line);
line = bufferreader.readLine(); // 读取下一行 
}


} catch (Exception e) {
e.printStackTrace();
}
//System.out.print(buffer.toString());
String scoreString = buffer.toString();
String[] scoreStringArr = scoreString.split(",");
int[] scoreStringArrInt = new int[scoreStringArr.length];
for(int i=0;i<scoreStringArr.length;i++){
scoreStringArrInt[i]=Integer.parseInt(scoreStringArr[i]);
}

int count1=0;
int count2=0;
for(int i=0;i<scoreStringArrInt.length;i++){
if(scoreStringArrInt[i]>=90&&scoreStringArrInt[i]<=100){
count1++;
}
}
}

}




剩下的,lz自己补充!

#23


该回复于2008-11-05 18:43:44被版主删除

#24


谢谢各位了!

#25


真的谢谢各位了!

#26


靠,发现现在遍地都是广告了!