zoukankan      html  css  js  c++  java
  • 第三周个人作业--数组从文件读取返回子数组的最大值

    package zuoye_02;
    
    import java.util.ArrayList;
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.io.IOException;
    
    public class shuzu2{
    
         public static void main(String[] args) {
                File f1 = new File("D:\JAVA-workplace\zuoye_02\shuzu_02.txt");
                toArrayByFileReader("D:\JAVA-workplace\zuoye_02\shuzu_02.txt");
            }
            
            public static long[] toArrayByFileReader(String name) {
                // 使用ArrayList来存储每行读取到的字符串
                ArrayList<String> arrayList = new ArrayList<>();
                try {
                    FileReader fr = new FileReader(name);
                    BufferedReader bf = new BufferedReader(fr);
                    String str;
                    // 按行读取字符串
                    while ((str = bf.readLine()) != null) {
                        arrayList.add(str);
                    }
                    bf.close();
                    fr.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                
                // 对ArrayList中存储的字符串进行处理
                int length = arrayList.size();
                long[] array = new long[length];
                System.out.println("读取到的数组为:");
                for (int i = 0; i < length; i++) {
                    String s = arrayList.get(i);
                    array[i] = Long.parseLong(s);
                    System.out.println(array[i]);
                }
                long max,chu;//最大子数组max和开始位置值chu
                int i;
                max = array[0];
                chu = array[0];
                for(i=1;i<length;i++) {  //将最大子数组和与开始位置的值分别定义变量,让开始位置值参与循环,每次循环后更新最大子数组和的值,直到循环结束
                    if(chu<0) {
                        chu = 0;  //如果chu小于0,则另start等于0,然后chu在自身基础上加上下一个数组元素
                    }
                    chu+=array[i];  //chu=chu+array[i];
                    if(chu>max) {  
                        max = chu;  //再判断chu与max的大小,若chu大于max,则max的值为chu,chu的值不变
                    }
                }
                System.out.println("最大子数组的和为:");
                System.out.println(max);
                return array;
            }
    }

    设计思路:先用一个toArrayByFileReader的函数实现从文件中按行读取数据并录入数据到数组中。

    然后将数组进行比较,求最大子数组。

    采用了Long.parseLong(s)函数对数据进行强制类型转换实现数组较大数据的录入。

    不足之处:还是没有办法不限制数据大小多少,一样会报错,除非遇到问题就提示无法完成。

  • 相关阅读:
    String空格删除和java删除字符串最后一个字符的几种方法
    Ceph 12.2.0 实践osd 智能分组功能
    Ceph 12.2.0 实践osd 智能分组功能
    Ceph 12.2.0 实践osd 智能分组功能
    Ceph 12.2.0 实践osd 智能分组功能
    取区域/扇区边界点
    取区域/扇区边界点
    取区域/扇区边界点
    取区域/扇区边界点
    解决客户端向服务器数据库传输中文乱码的方法
  • 原文地址:https://www.cnblogs.com/zhoulonghai/p/10548956.html
Copyright © 2011-2022 走看看