Java第三周作业

package geren02;
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 Wenjian
{
    public static void main(String[] args)
    {
        long start = System.currentTimeMillis();
        
        int LENGTH=100000000;//数量
        int FANWEI=10000;//   n  :    -n   ~   +n
        int inum;
        int j=0;
        int m=0;
        int i=0,r=0,k=0;
        
        String snum="";
        String fileName="number.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(r=0;r<10;r++)
            {
                for( k=0;k<LENGTH;k++,m++)
                {
                    inum=(int)(1+Math.random()*FANWEI*2)-FANWEI;
                    pw.print(inum+" ");
                    if(m==20)
                        {
                            pw.print("\n");
                            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(j>=LENGTH)
                
                {
                    System.out.println("数字过多,多于"+LENGTH+"将不予读取");
                    break;
                }*/
                 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("答案为:\t"+maxsum);

        }
        catch(InputMismatchException e2)
        {
            System.out.println("数字过大或输入格式不对");
        }
        catch(Exception e)
        {
            System.out.println("错误于:\t"+i);
            System.out.println("错误!!!");
            System.out.println(e.getMessage());
            e.printStackTrace();
        }
        
        
                long end = System.currentTimeMillis();
                System.out.println("程序运行时间:"+(end-start)+"ms");

}
}

实验要求

1.要求数组从文件读取。


2.如果输入的数组很大,并且有很多大的数字,就会产生比较打的结果(考虑溢出),保证程序正常输出。


3.如果输入文件的参数有错误,这个程序应该能正常输出,并显示相应的错误。任何输入错误都不能导致你的程序崩溃。


 


posted @ 2019-03-17 23:59  暗梦  阅读(138)  评论(0编辑  收藏  举报