一:产生5000个1~9999之间的随机整数,将其存入文本文件A.TXT中
二:从文件中读取这5000个整数,并计算其最大直 最小值和平均值
(但运行输不出5000个数这是怎么回事啊?)
import java.util.Random;
import java.io.*;
public class xiti6
{
public static void main(String[] args) throws Exception
{int a[]=new int[5000],n=0;
FileWriter fw1=new FileWriter("c:\\a.txt");
BufferedWriter bw =new BufferedWriter(fw1);
FileReader fr=new FileReader("c:\\a.txt");
BufferedReader br =new BufferedReader(fr);
BufferedWriter bw2 =new BufferedWriter(new OutputStreamWriter(System.out));
Random num=new Random();
int s,linenum=0;
for (int i=1;i<5000 ; i++)
{
s=num.nextInt(9999);
a[i]=s;
linenum=linenum+1;
bw.write("(");
bw.write(String.valueOf(linenum));
bw.write(")");
bw.write(String.valueOf(s)+" ");
bw.write(" ");
bw.newLine(); }
String s2=br.readLine();
while (s2!=null)
{n=n+1;
bw2.write(" ");
bw2.write(s2);
s2=br.readLine();
if (n>=10)
{bw2.newLine();
n=0;
}
}
bw.close();
bw2.close();
double avg=0,sum=0;
int max=a[0];
int min=a[0];
for (int j=1;j<1000 ; j++)
{if (a[j]>max)
max=a[j];
else if (a[j]<min)
min=a[j];
sum=sum+a[j];
avg=sum/5000;}
System.out.println();
System.out.println("最大数为"+max+"最小数为"+min+"平均值为"+avg);
}
}
二:从文件中读取这5000个整数,并计算其最大直 最小值和平均值
(但运行输不出5000个数这是怎么回事啊?)
import java.util.Random;
import java.io.*;
public class xiti6
{
public static void main(String[] args) throws Exception
{int a[]=new int[5000],n=0;
FileWriter fw1=new FileWriter("c:\\a.txt");
BufferedWriter bw =new BufferedWriter(fw1);
FileReader fr=new FileReader("c:\\a.txt");
BufferedReader br =new BufferedReader(fr);
BufferedWriter bw2 =new BufferedWriter(new OutputStreamWriter(System.out));
Random num=new Random();
int s,linenum=0;
for (int i=1;i<5000 ; i++)
{
s=num.nextInt(9999);
a[i]=s;
linenum=linenum+1;
bw.write("(");
bw.write(String.valueOf(linenum));
bw.write(")");
bw.write(String.valueOf(s)+" ");
bw.write(" ");
bw.newLine(); }
String s2=br.readLine();
while (s2!=null)
{n=n+1;
bw2.write(" ");
bw2.write(s2);
s2=br.readLine();
if (n>=10)
{bw2.newLine();
n=0;
}
}
bw.close();
bw2.close();
double avg=0,sum=0;
int max=a[0];
int min=a[0];
for (int j=1;j<1000 ; j++)
{if (a[j]>max)
max=a[j];
else if (a[j]<min)
min=a[j];
sum=sum+a[j];
avg=sum/5000;}
System.out.println();
System.out.println("最大数为"+max+"最小数为"+min+"平均值为"+avg);
}
}
===>for (int j=1;j<5000 ; j++) {if (a[j]>max)
max=a[j];
else if (a[j]<min)
min=a[j];
sum=sum+a[j];
avg=sum/5000;}
System.out.println();
System.out.println("最大数为"+max+"最小数为"+min+"平均值为"+avg);
}
就可以输出5000个数感觉你的读写混在一起很乱,应该先全部写进去后,在依次读出
===>for (int j=1;j<5000 ; j++)也应该改成 j=0 才对啊,呵呵
{n=n+1;
bw2.write(" ");
bw2.write(s2);
s2=br.readLine();
if (n>=10)
{bw2.newLine();
n=0;
}
}
才是能否输出的原因
而
for (int j=1;j<1000 ; j++)
===>for (int j=1;j<5000 ; j++) {if (a[j]>max)
max=a[j];
else if (a[j]<min)
min=a[j];
sum=sum+a[j];
avg=sum/5000;}
System.out.println();
System.out.println("最大数为"+max+"最小数为"+min+"平均值为"+avg);
}
只是计算max,min,avg的值是否正确所以,楼主应该看看s2!=null这个条件是否正确
import java.util.Random;
import java.io.*;public class xiti6
{
public static void main(String[] args) throws Exception
{
int a[]=new int[5000];
//int n=0;
FileWriter fw1=new FileWriter("c:\\a.txt");
BufferedWriter bw =new BufferedWriter(fw1);
FileReader fr=new FileReader("c:\\a.txt");
BufferedReader br =new BufferedReader(fr);
BufferedWriter bw2 =new BufferedWriter(new OutputStreamWriter(System.out));
Random num=new Random(); int s,linenum=0; for (int i=0;i<5000; i++)
{
s=num.nextInt(9999);
a[i]=s;
linenum=linenum+1;
bw.write("(");
bw.write(String.valueOf(linenum));
bw.write(")");
bw.write(String.valueOf(s)+" ");
bw.write(" ");
bw.newLine();
}
bw.close(); //注意这条语句的位置 String s2=br.readLine(); while (s2!=null)
{
//n=n+1;
//bw2.write(" ");
bw2.write(s2);
s2=br.readLine();
//if (n>=10)
//{
bw2.newLine();
// n=0;
//}
} bw2.flush(); //注意这条语句的位置
double avg=0,sum=0;
int max=a[0];
int min=a[0]; for (int j=1;j<5000 ; j++)
{
if (a[j]>max)
max=a[j];
else if (a[j]<min)
min=a[j]; sum=sum+a[j];
}
avg=sum/5000; //正确计算平均值应在sum计算完所以数据之后再除以总个数 System.out.println();
System.out.println("最大数为"+max+",最小数为"+min+",平均值为"+avg);
bw2.close(); //最后关闭流
}
}
1、在输出之前你就把输出缓冲区给关闭了,所以结果不能够输出
2、在JAVA中数组是以0开始的,你定义5000个,所以结果就少了
下面是修改后的程序:结果正确import java.util.Random;
import java.io.*;
public class xiti6
{
public static void main(String[] args) throws Exception {
int a[]=new int[5000],n=0;
FileWriter fw1=new FileWriter("c:\\a.txt");
BufferedWriter bw =new BufferedWriter(fw1);
FileReader fr=new FileReader("c:\\a.txt");
BufferedReader br =new BufferedReader(fr);
BufferedWriter bw2 =new BufferedWriter(new OutputStreamWriter(System.out));
Random num=new Random();
int s,linenum=0;
for (int i=0;i<5000; i++)
{
s=num.nextInt(9999);
a[i]=s;
linenum=linenum+1;
bw.write("(");
bw.write(String.valueOf(linenum));
bw.write(")");
bw.write(String.valueOf(s));
bw.newLine();
}
bw.flush();
// bw.close(); String s2=null;
while ((s2=br.readLine())!=null)
{ n=n+1;
//bw2.write(" ");
//System.out.println();
bw2.newLine();
bw2.write(s2);
}
bw2.flush();
//bw2.close();
double avg=0,sum=0;
int max=a[0];
int min=a[0];
for (int j=0;j<5000 ; j++)
{if (a[j]>max)
max=a[j];
else if (a[j]<min)
min=a[j];
sum=sum+a[j];
avg=sum/5000;
}System.out.println();
System.out.println("最大数为"+max+"最小数为"+min+"平均值为"+avg);
if(bw!=null){bw.close();bw=null;}
if(bw2!=null){bw2.close();bw2=null;} }
}