zoukankan      html  css  js  c++  java
  • 软件工程-个人作业2

    1、题目要求:(1)要求数组从文件读取。

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

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

    2、设计思路:(1)文件存取

                            (2)根据数据量分类处理:①数据量10万以下,就全部读取,然后计算。②数据量十万以上,就每次读取十万数据,依次处理,最后汇总得出最大值。

                           (3)函数分模块实现功能,增强程序的耦合性。

    3.源程序代码

    package main;
    
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    
    public class test {
        public static void main(String[] args) throws Exception {
            File file = new File("src/test.txt");
            if(txtlength(file, " ")<100000) {
                int[] a = getLineFromTxt(file, " ");
                System.out.println(mathmatic(a));
            }
            else {
                
            }
        }
    
    
        public static int[] getLineFromTxt(File file, String split) throws Exception {
            BufferedReader br = new BufferedReader(new FileReader(file));
            String firstLine = br.readLine(); // 就读第一行哦
            String[] arrs = firstLine.split(" ");
            int[] arr = new int[arrs.length];
            for (int i = 0; i < arr.length; i++) {
                arr[i] = Integer.parseInt(arrs[i]);
            }
            if (br != null) {
                br.close();
                br = null;
            }
            return arr;
        }
        public static int[] getLineFromTxt2(File file, String split, int d) throws Exception {
            BufferedReader br = new BufferedReader(new FileReader(file));
            String firstLine = br.readLine(); // 就读第一行哦
            String[] arrs = firstLine.split(" ");
            int[] arr = new int[arrs.length];
            for (int i = d; i < d+100000; i++) {
                arr[i] = Integer.parseInt(arrs[i]);
            }
            if (br != null) {
                br.close();
                br = null;
            }
            return arr;
        }
    
        public static int txtlength(File file, String split) throws Exception {
            BufferedReader br = new BufferedReader(new FileReader(file));
            String firstLine = br.readLine(); // 就读第一行哦
            String[] arrs = firstLine.split(" ");
            return arrs.length;
        }
    
        public static int mathmatic(int[] a) {
    
            int[] b = new int[a.length];
            int[] c = new int[a.length];
    //            生成整型数组
    
            for (int j = 0; j < c.length; j++) {
                int sum = 0;
                for (int i = j; i < a.length; i++) {// 生成各个子数组
                    sum = (int) (a[i] + sum); // (连续的一个和多个整数组成)
                    b[i] = sum; // 求出各个子数组的和
                }
                int max = b[0]; // 比较各个子数组的和的大小
                for (int i = j; i < b.length; i++) {
                    if (max < b[i])
                        max = b[i];
                }
                c[j] = max;
            }
            int max = c[0];
            for (int i = 0; i < c.length; i++) {// 输出最大子数组的和
                if (max < c[i])
                    max = c[i];
            }
            return max;
        }
    }

    4、个人反思

     这个程序的关于数据很大,处理大数据功能未实现,不过我体会到一种分块处理数据的思想

  • 相关阅读:
    简单了解一下:var 、let、const
    C# FlagAttriute 的 小妙招
    项目经验面试题
    linux面试题详解
    jvm面试题详解
    数据库面试详解
    微服务框架面试题
    框架面试题(maven、ZooKeeper、Dubbo、Nginx、Redis、Lucene、Solr、ActiveMQ、JMS
    设计模式面试题详解
    WEB方面面试题详解
  • 原文地址:https://www.cnblogs.com/quxiangjia/p/10548468.html
Copyright © 2011-2022 走看看