返回一个整数数组中最大子数组的和02

 

 首先创建一个input.txt文件,我将其放在了D盘中

这个就是返回一个数组的子数组和的最大值的进阶,我的想法是:首先使用文件流读取文件,存入一个字符串数组中,在将字符串数组转化为整型数组,其他的基本和第一个的思路相同。

注:注意大数处理,这里我是用一个static方法来进行处理。

import java.io.BufferedReader;
import java.io.FileReader;
import java.math.BigInteger;
import java.util.Arrays;
import java.util.stream.IntStream;

//返回子数组的最大值,文件操作
public class Test3 {
    public static void main(String[] args) throws Exception {
        String[] sp = null;
        //读取文件
        BufferedReader br = new BufferedReader(new FileReader("D:/input.txt"));
        String str;
        while ((str = br.readLine()) != null){
            sp = str.split(",");
        }
        //将字符串数组转化为整型数组
        int[] array = Arrays.stream(sp).mapToInt(Integer::parseInt).toArray();
        System.out.println(getMax(array));
    }

    //用于接收数组,将其转化为数字并比较
    public static int getMax(int array[]){
        int[] arr = new int[100];
        Bignum(array);
        int temp = 0;
        int max = 0;
        int sum = 0;
        for (int i = 0; i < array.length; i++) {
            sum += array[i];
            if(sum <= 0){
                sum = 0;
            }
            if(sum > 0){
                max = sum;
            }
        }
        return max;
    }

    //判断大数
    public static void Bignum(int[] array){
        BigInteger[] big = new BigInteger[100];
        for (int i = 0; i < array.length; i++) {
            if(!array.equals("")){
                big[i] = new BigInteger(String.valueOf(array[i]));
            }
        }
    }
}

 

 由于所有的数据已经在input.txt中写好(当然我的数据和题目中的不同,测试所需),所以运行结束以后只有一个最大值。

有什么不足的欢迎大家指正。

posted on 2022-03-18 22:33  跨越&尘世  阅读(24)  评论(0编辑  收藏  举报