利用随机数产生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
有提示嘛
#4
自己做才能有提高
#5
Random类
数组
你都知道了,怎么不动下脑勒!
欢迎加入 JAVA交流群 72923840
数组
你都知道了,怎么不动下脑勒!
欢迎加入 JAVA交流群 72923840
#6
Random类
数组
你都知道了,怎么不动下脑勒!
欢迎加入 JAVA交流群 72923840
数组
你都知道了,怎么不动下脑勒!
欢迎加入 JAVA交流群 72923840
#7
先产生1000个0-100随机数,遍历一遍把他们分组统计个数,直接就算出人数、所占百分比,平均分了.
提示已经很明白了.
LZ应该自己写代码.
提示已经很明白了.
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
顶楼上的
#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
#17
跟着up了
#18
写程序太懒了相当不好
#19
jffffffffffffffffffffffffffffffffffffffffffffffffffff
#20
首先用Random类随机产生一个数字,然后把它存入文本文件中。
在for循环1000便上面的过程
...
在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
#24
谢谢各位了!
#25
真的谢谢各位了!
#26
靠,发现现在遍地都是广告了!
#1
你都知道怎么做了啊,哈哈
#2
不知道啊 ,我们刚学文件输入输出, 学得不好呀,这是上机题, 帮帮咯!
#3
有提示嘛
#4
自己做才能有提高
#5
Random类
数组
你都知道了,怎么不动下脑勒!
欢迎加入 JAVA交流群 72923840
数组
你都知道了,怎么不动下脑勒!
欢迎加入 JAVA交流群 72923840
#6
Random类
数组
你都知道了,怎么不动下脑勒!
欢迎加入 JAVA交流群 72923840
数组
你都知道了,怎么不动下脑勒!
欢迎加入 JAVA交流群 72923840
#7
先产生1000个0-100随机数,遍历一遍把他们分组统计个数,直接就算出人数、所占百分比,平均分了.
提示已经很明白了.
LZ应该自己写代码.
提示已经很明白了.
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
顶楼上的
#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
#17
跟着up了
#18
写程序太懒了相当不好
#19
jffffffffffffffffffffffffffffffffffffffffffffffffffff
#20
首先用Random类随机产生一个数字,然后把它存入文本文件中。
在for循环1000便上面的过程
...
在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
#24
谢谢各位了!
#25
真的谢谢各位了!
#26
靠,发现现在遍地都是广告了!