package 数组; import java.util.Scanner; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.PrintWriter; import java.util.ArrayList; import java.util.InputMismatchException; public class shuzu { public static void main(String[] args) { long start = System.currentTimeMillis();//获取开始的时间 int LENGTH=1000000;//设置取数的范围 int FANWEI=10000; int inum; int j=0; int m=0; int i=0,r=0,k=0; String snum=""; String fileName="D:/xin.txt";//设置要读取的文件夹 int [] num=new int[LENGTH]; int array[]=new int[LENGTH]; long maxsum=array[0]; long maxstart=array[0]; try { File f=new File(fileName); if(!f.exists())//判读按文件是否存在 { throw new Exception("文件"+fileName+"不存在"); } FileWriter fw=new FileWriter(f); PrintWriter pw=new PrintWriter(fw); for( k=0;k<LENGTH;k++,m++) { inum=(int)(1+Math.random()*FANWEI*2)-FANWEI;//获取随机数 pw.print(inum+" ");//将随机数写入文件夹 if(m==20) { pw.print(" "); m=0; } } pw.flush(); FileReader fr=new FileReader(f);//读取文件内容 Scanner in=new Scanner(fr); if(!in.hasNext()) { throw new Exception("文件"+fileName+"内容为空");//判断文件内容是否为空 } while(in.hasNext()) { if(maxstart<0) { maxstart=0; } maxstart+=in.nextInt(); if(maxstart>=(Long.MAX_VALUE/2-1)||maxstart<=(Long.MIN_VALUE/2-1))//设置范围 { throw new Exception("数字过大溢出");//超出范围之后,显示数字过大溢出 } if(maxstart>maxsum) maxsum=maxstart; j++; } System.out.println("答案为: "+maxsum);//输出最后答案 } catch(InputMismatchException e2) { System.out.println("数字过大或输入格式不对"); } catch(Exception e) { System.out.println("错误于: "+i); System.out.println("错误!!!"); System.out.println(e.getMessage()); e.printStackTrace(); } long end = System.currentTimeMillis();//获取结束的时间 System.out.println("程序运行时间:"+(end-start)+"ms");//得出最终的时间 } }
思路:先设定文件中可以存放的数字个数范围,然后设定一个文件夹,随机产生数字,写入该文件夹中,然后读取文件中的数字,找出最后想要的结果,然后在程序的开始获取开始是的时间,然后在结束,获取结束时的时间,然后就可以得出计算所用的时间。
最终结果截图为: