个人作业二

这周的测试是在原来的基础上,运用了文件储存的形式,添加了一些问题,从文件中读取以及在运算中的过程中,出现超除了整数的范围情况的处理,文件的存储不是很难,但是对于超出范围的情况,一开始还没有头绪,但经过了一些同学的指导和百度,略微弄懂了一些,但是在实现的时候,还是出现了一些问题,实现了对于以规模的数据存储,之后有时显得大数据的计算。

复制代码
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class on{
    public static void main(String[] args) throws IOException 
    {
          findmax();
}
        public static findmax(){

        Scanner in= new Scanner(System.in);
        //writeFile();
        int hang=gethang();
        int[] num=getnum(hang);
        long[] num2=new long [hang];
        long max=0;
        int s;
        boolean f=false;
        for(s=0;s<num.length;s++) {
            if(num[s]==0)break;
            if(num[s]>0)f=true;
        }
        if(f==true) {
        max=num[0];
        num2[0]=num[0];
        for(int i=1;i<s;i++) {
            num2[i]=num2[i-1]+num[i];
            if(num2[i]>num2[i-1])max=num2[i];
        }
        for(int i=0,j=0;j<s;) {            
            num2[i]=num2[i]-num[j];
            if(num2[i]>max)max=num2[i];
            if(i==s-1) {j++;i=j;}
            else i++;
        }
        }
        else {
            max=num[0];
            num2[0]=num[0];
            for(int i=1;i<s;i++) {
                num2[i]=num2[i-1]+num[i];
                if(num2[i]>max)max=num2[i];
            }
        }
        System.out.println(max);
        in.close();
    }
    public static int gethang() {
        int i=0;
        try (FileReader reader = new FileReader("text.txt"); 
                BufferedReader br = new BufferedReader(reader)) 
            { 
            String line;  
            while ((line = br.readLine()) != null) {
                i++;
             }
            } 
            catch (IOException e)
            { 
                e.printStackTrace(); 
            }
            return i;
    }
    public static int[] getnum(int lang) throws IOException {
        int [] in=new int[lang];
        int i=0;
        try (FileReader reader = new FileReader("text.txt"); 
                BufferedReader br = new BufferedReader(reader)) 
            { 
            String line;  
            while ((line = br.readLine()) != null) {
                 in[i]= Integer.parseInt(line);
                i++;
             }
            } 
            catch (IOException e)
            { 
                e.printStackTrace(); 
            }
            return in;
    }
    
        public  void writeFile() {
            int i=0;
            int fu=0;
            try {
                File writeName = new File("text.txt");
                writeName.createNewFile();
                try (FileWriter writer = new FileWriter(writeName);
                     BufferedWriter out = new BufferedWriter(writer)
                ) {
                    for(int j=0;j<150;j++) {
                        i=1+(int)(Math.random()*9);
                        fu=1+(int)(Math.random()*2);
                        if(fu==1)i=0-i;
                    out.write(i+"
"); // 
换行
                    out.flush(); 
                    }
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
}    
复制代码
原文地址:https://www.cnblogs.com/baixiaoli/p/10548447.html