zoukankan      html  css  js  c++  java
  • 求数组子数组最大和续集

    要求:

    数组从文件读取。
    如果输入的数组很大, 并且有很多大的数字, 就会产生比较大的结果 (考虑一下数的溢出), 请保证你的程序能正常输出。
    另外, 如果输入文件的参数有错误, 这个程序应该能正常退出, 并显示相应的错误信息。 任何输入错误都不能导致你的程序崩溃。

    package test1;
    
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.io.IOException;
    import java.math.BigInteger;
    import java.util.Scanner;
    
    public class test2 {
        public static void main(String[]args) throws IOException
        {
            Scanner in = new Scanner(System.in);
            String fileName = "D:\University\Sophomore Shang\专业\JAVA项目\test1\src\test1\target.txt";
            File file = new File(fileName);
            System.out.println("文件字节大小是::"+file.length());
            if(!file.exists()){
                System.out.println("文件不存在!");
            }else if(file.exists() && file.length() == 0) {
                System.out.println("文件为空!");
            }else{
                FileReader fileReader = new FileReader(fileName);
                BufferedReader bufferedReader = new BufferedReader(fileReader);
                String line;
                int i,j,flag=0;
                BigInteger tmp = new BigInteger("0");
                BigInteger max = new BigInteger("0");
                while((line=bufferedReader.readLine())!=null) {
                    String []s = line.split(",");
                    for(i=0;i<s.length;i++)
                    {
                        String k=s[i];
                        for(j=0;j<k.length();j++)
                        {
                            if(!(k.charAt(j)>='0'&&(k.charAt(j)<='9')||k.charAt(j)=='-'||k.charAt(j)==',')){
                                System.out.println("文件输入不合法,必须全部由数字组成,且中间分割用逗号!");
                                flag=1;
                                break;
                            }
                        }
                        BigInteger key = new BigInteger(k);
                        /*if(k.charAt(i)=='-') 
                           {
                              s[i];
                              continue;
                           }*/
                        
                        BigInteger cmp=new BigInteger("0");
                        if(key.subtract(cmp).intValue()>0)
                            tmp = tmp.add(key);
                        else 
                            tmp = key;  
                        if(tmp.subtract(max).intValue()>0)
                            max=tmp;
                        if(flag==1)
                            break;
                    }
                    if(flag==1)
                        break;
                }
                if(flag==0)
                    System.out.println("子数组最大值为:"+max);
                bufferedReader.close();
                fileReader.close();
            }
        }
    }
    View Code

    ps:

    1.如果File表示一个具体文件,则length方法返回这个文件的字节大小;

    2.如果File表示一个目录,则length方法的返回值不确定;

    3.如果File表示的目录或文件不存在,则length方法的返回值为0L

    注:还有一些bug,负数无法识别,尚未更改,但可以采取每行读取的方式,再存放到数组中,但尚未完善。

    © 版权声明
    文章版权归作者所有,未经允许请勿转载。
    THE END
  • 相关阅读:
    苹果 macOS 安装 Source Code Pro
    C# 中代码执行 ping 操作
    WPF 中 Path 使用虚线
    查看 Java Web 开发环境软件是 32 位还是 64 位
    linux 磁盘io监控
    Linux下系统如何监控服务器硬件、操作系统、应用服务和业务
    ORA-00257: archiver error. Connect internal only, until freed 错误的处理方法
    完全卸载oracle11g步骤
    用JDBC连接SQL Server2017数据库
    oracle INS-13001 环境不满足最低要求
  • 原文地址:https://www.cnblogs.com/xp-thebest/p/12380923.html
Copyright © 2011-2022 走看看