• 从文件中读取求数组的子数组的最大值


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

    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();
                }
            }
    }    
  • 相关阅读:
    dedecms list 判断 每隔3次输出内容
    dede 后台登录以后一片空白
    SSO单点登录在web上的关键点 cookie跨域
    简单批量复制百度分享链接
    PHP强大的内置filter (一)
    MySql数据备份与恢复小结
    linux命令 screen的简单使用
    xdebug初步
    本地虚拟机挂载windows共享目录搭建开发环境
    MySQL 5.6 警告信息 command line interface can be insecure 修复
  • 原文地址:https://www.cnblogs.com/Evak/p/10544096.html
Copyright © 2020-2023  润新知