个人作业 数组(续)

实验要求:

设计思路:利用Random函数产生随机数并将其存入shuzu.txt文件中,然后利用BufferedReader读取文件中的数组,并将其存入数组s中,随后求取其最大子数和,利用上篇博客的方法计算。

源程序代码:

package shuzu;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.Scanner;



public class shuzu1 {
    static String s="";
    static Scanner in=new Scanner(System.in);
    
    public static void main(String[] args)throws IOException{

        read();
        Random();
        max();
        
    }
    public static void max() {
    String[] rang = s.split("[^(-9--10-9)]");  
    BigInteger max=new BigInteger("0");
    BigInteger maxsum=new BigInteger(String.valueOf(rang[0]));
    for(int i=0;i<rang.length;i++) {
        int a=max.compareTo(BigInteger.valueOf(0));
        if(a==0||a==-1) {
            max=new BigInteger(String.valueOf(rang[i]));
        }
        else {
            max.add(new BigInteger(String.valueOf(rang[i])));
        }
        if(maxsum.compareTo(max)==-1) {
            maxsum=max;
        }
    }
    System.out.println("最大值为:"+maxsum);
    }
    //读取文件的方法
    public static String read() throws IOException{
        FileInputStream file=new FileInputStream("d:\\shuzu.txt");
        BufferedReader br = new BufferedReader(new InputStreamReader(file));
        String temp="";
         while((temp = br.readLine()) != null) 
                s=s+temp+"\n";//存入字符串s中
        file.close();
        br.close();
        return s;
    }
    public static void Random() throws IOException{
        int n=5000000;
        File fi=new File("d:\\shuzu.txt");
        FileWriter out = new FileWriter(fi);
        BufferedWriter bw = new BufferedWriter(out);
        for(int i = 0;i < n ; i++) {
            int ran = (int)(Math.random()*10000000);
             BigInteger a = new BigInteger(String.valueOf(ran));
             bw.write(String.valueOf(a) + " ");
        }
        bw.close();
        
    }
    
}
    

结果截图:

个人反思:

个人对文件的处理并不熟悉,通过查询百度勉强写出文件的读取操作。以及数组过多溢出的问题,将int类型转化为

BigInteger类型,由于对其用法的不熟悉,代码敲写太慢,在百度上查询了一些其用法,再就是这个只能运行百万级,对于千万级或者上亿的数据还不行。

 

posted @ 2019-03-17 22:12  Caper123  阅读(129)  评论(0编辑  收藏  举报