(1)产生5000个1-9999之间的随机整数,将其存入文本文件a.txt中
(2)从文件中读取这5000个整数,并计算其最大值、最小值和平均值
本人用的流失字节流,向文本文件a.txt中写入了产生的随机数,并向其中读入了刚才写入的随机数,但是写进去和读出来的数,貌似不是产生的那些随机数。
import java.io.*;
//(1)产生5000个1-9999之间的随机整数,将其存入文本文件a.txt中
//(2)从文件中读取这5000个整数,并计算其最大值、最小值和平均值
class Ex2 {
public static void main(String[] args) throws IOException {
FileOutputStream fos = new FileOutputStream("a.txt");
FileInputStream fis = new FileInputStream("a.txt");
for(int i = 1; i <= 500; i++) {
int number = (int)(Math.random() * 10000);
System.out.println(number);
fos.write(number);
}
int b = 0;
int max = -1;
int min = 10000;
long sum = 0;
while((b = fis.read()) != -1) {
System.out.println(b);
sum += b;
if(max < b) {
max = b;
}
if(min > b) {
min = b;
}
}
System.out.println("最大值:" + max);
System.out.println("最小值:" + min);
System.out.println("平均值:" + sum/5000);
fis.close();
fos.flush();
fos.close();
}
}
输出是:
最大值:254
最小值:0
平均值:12
而我们知道,计算机产生的随机数应该是均衡的,最少平均数应该是5000左右才对呀!
------解决思路----------------------
最适合用DataInputStream和DataOutputStream。不必担心数据格式问题。
------解决思路----------------------
FileOutputStream的write(int)方法一次只能写入一个字节,所以只能写入你传入的int的低字节。
1楼已经回答了你的问题了。用DataInputStream和DataOutputStream即可。
------解决思路----------------------
FileOutputStream的write(int)方法,转成字符串写入
------解决思路----------------------
一般都是首选 DataInputStream / DataOutputStream 读/写 基本数据类型
DataInputStream in = new DataInputStream (fis);