个人作业一(补充)

package com.two;
import java.io.BufferedReader;
import java.util.Random;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.*;
/*
 * 寻找各个数开头的最大值,进行比较
 * 
 * */
public class two {

    
    public static void main(String[] args)
    {
        Random random=new Random();
        try {
            File f=new File("D:\\workspace\\two\\two.txt");     
            //写入文件
            
            try {
               BufferedWriter bw = new BufferedWriter(new FileWriter(f));
               int sb=0;       
               int pingjun = 0;
               for(int i = 0; i < 10000000; i++){
                   sb = (int)Math.floor((random.nextDouble()*100000000.0));
                   bw.write(String.valueOf(sb));
                   bw.write(" ");
               }
               bw.flush();
               bw.close();
              }
            catch(Exception e) {
                e.printStackTrace();
            }
        
            
            //读取文件
            if (f.exists()) {
                System.out.println("文件存在");
            } else {
                System.out.print("文件不存在");
               // f.createNewFile();// 不存在则创建
            }
            BufferedReader input=new BufferedReader(new FileReader(f));
            int k=0;
            String str="";             //文件内容
            String s="";
            while((str=input.readLine())!=null) {
                 s=str+s;    
            }
            String[] a1=s.split(" ");        //分割
            int a[]=new int[a1.length];       //转换
            for(int t=0;t<a1.length;t++) {
                a[t]=Integer.parseInt(a1[t]);
            }
            for(int t=0;t<a.length;t++) {
                System.out.println(a[t]);
            }
            //获取数据
            int max[]=new int[a.length];
            for(int i=0;i<max.length;i++) {
                max[i]=0;
            }
            int sum=0;
            for(int i=0;i<a.length;i++) {           //以各个数开头的最大值
                max[i]=a[i];
                sum=max[i];
                if(i<a.length) {
                    for(int j=i+1;j<a.length;j++) {
                        sum=sum+a[j];
                        if(max[i]<sum)max[i]=sum;
                    }
                }
            }
            int max1=max[0];
            for(int i=1;i<max.length;i++) {
                if(max1<=max[i]) {
                    max1=max[i];
                }
            }
            System.out.println("最大子数组之和为:"+max1);
        }
        catch(Exception e) {
            e.printStackTrace();
        }
    }
}

截图:

 

以上代码是在文件中随机产生1亿以内的正整数,随机产生1千万个,存放到文件中,然后读取出来,求取最大子数组之和。

posted @ 2019-03-17 18:59  星*月  阅读(93)  评论(0编辑  收藏  举报