一:产生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);
   }
}

解决方案 »

  1.   

    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);
       }
    就可以输出5000个数感觉你的读写混在一起很乱,应该先全部写进去后,在依次读出
      

  2.   

    for (int j=1;j<1000 ; j++)
    ===>for (int j=1;j<5000 ; j++)也应该改成 j=0 才对啊,呵呵
      

  3.   

    关键是while (s2!=null)
    {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这个条件是否正确
      

  4.   

    更正,不好意思,刚才理解错误,不是条件的问题,其实主是问题在于读取文件流时的指针位置,现把我调试得出正确结果的代码拷贝如下:
    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();                           //最后关闭流
        }
    }
      

  5.   

    你的程序是有几个小问题:
    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;}   }
    }