zoukankan      html  css  js  c++  java
  • 从文件中读取求数组的子数组的最大值

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

    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 zdh{
        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();
                }
            }
    }    
  • 相关阅读:
    分享:图书馆常用开源软件
    一个 Python 程序每一行的内存占用分析 杨超(星辰海 | 真人图书馆·Python 程序员) 42qu.com
    分享:使用 const_cast<> 改变map中 key 的值
    Examples · Remarkerbe
    内联函数
    什么值得买 » 体感神器?Leap Motion 运动控制器(Kinect的200倍精确度) $69.99预定(直邮中国运费$14.99)Leap Motion外设产品,新鲜物,海淘特价
    HiveClient
    sentry : 前端&后端 的 错误信息统计 张沈鹏(42qu.com·创始人&程序员) 42qu.com
    fabric
    fabric调用代码分析
  • 原文地址:https://www.cnblogs.com/Evak/p/10544096.html
Copyright © 2011-2022 走看看