zoukankan      html  css  js  c++  java
  • 文件读入最大子数组

    package kai;

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.math.BigInteger;
    import java.util.ArrayList;
    import java.util.Scanner;

    public class newFindMax {
    public static void main(String[] args) {
    //"C:\Users\Administrator\Desktop\kkk.txt"
    //判断文件路径输入是否正确

    FindArrayList(getfile());
    }
    private static BigInteger FindArrayList(File file) {
    ArrayList<String> arrayList = new ArrayList<>();
    try {
    InputStreamReader input = new InputStreamReader(new FileInputStream(file));
    BufferedReader bf = new BufferedReader(input);
    // 按行读取字符串
    String str;
    while ((str = bf.readLine()) != null) {
    arrayList.add(str);
    }
    bf.close();
    input.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    // 对ArrayList中存储的字符串进行处理
    int count=0;
    int count2=0;
    ArrayList<String> number = new ArrayList<>();
    int length = arrayList.size();
    for (int i = 0; i < length; i++) {
    String [] s = arrayList.get(i).split(" ");
    int width=s.length;
    for(int j=0;j<width;j++) {
    if(!s[j].equals("")&&s[j].matches("^-?\d+$")) {
    number.add(s[j]);
    count++;
    }
    count2++;
    }

    }
    System.out.println("本次共识别"+count+"个数据;有"+(count2-count)+"个非数字数据不能识别");
    int numbersize=number.size();
    BigInteger q=new BigInteger("-99999999999999999999999999999999999999999999");
    for(int i=1;i<numbersize;i++) {
    ArrayList<String> newNumber=new ArrayList<String>();
    for(int j=0;j<number.size();j++) {
    newNumber.add(number.get((i+j)%numbersize));
    }

    q= max(selectArray(newNumber),q);

    }

    System.out.println(q);
    return q;
    }
    public static BigInteger selectArray(ArrayList<String> number) {
    BigInteger ans=new BigInteger((String)number.get(0));
    for(int i = 1;i < number.size(); i++){
    BigInteger big1=new BigInteger((String)number.get(i));
    BigInteger big2=new BigInteger((String)number.get(i-1));
    BigInteger big3=big1.add(big2);
    if(big3.compareTo(big1)>=0) {
    number.set(i, big3.toString());
    }

    }

    for(int i=0;i<number.size();i++) {
    BigInteger big=new BigInteger((String)number.get(i));
    ans=max(ans,big);
    }

    return ans;

    }

    private static BigInteger max(BigInteger big1, BigInteger ans) {
    // TODO Auto-generated method stub
    if(big1.compareTo(ans)>=0) {
    return big1;
    }
    else return ans;

    }
    public static File getfile() {
    System.out.println("请输入文件路径");
    Scanner sc=new Scanner(System.in);
    while(true) {
    String line=sc.nextLine();
    File kk=new File(line);
    if(!kk.isFile()) {
    System.out.println("输入的不是文件路径,请重新输入");
    }
    else if(kk.isFile()) {
    return kk;
    }

    }
    }

    }

  • 相关阅读:
    Row versus Set Processing, Surprise!(集合处理和单行处理数据的差异性)
    SVN导出增量包的方法
    Number of Digit One
    VPS+LNMP+WordPress搭建个人网站
    寻找最小的k个数(大顶堆方法)
    二叉搜索树转化为有序双向链表(C语言)
    LeetCode 345 Reverse Vowels of a String
    LeetCode 278 First Bad Version
    LeetCode 205 Isomorphic Strings
    LeetCode 88 Merge Sorted Array
  • 原文地址:https://www.cnblogs.com/yanwenhui/p/12378731.html
Copyright © 2011-2022 走看看