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千万个,存放到文件中,然后读取出来,求取最大子数组之和。