• 数组(续)


    要求:数组从文件中读取

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

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

    设计思路:1、数的溢出:通过java.math里的BigInteger存储最大子数组和

    源码

    package shuzu;
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.io.IOException;
    import java.math.BigInteger;
    public class shuzu{
        public static void main(String[] args) throws IOException
        {
            String fileName ="D:\shuzu.txt";
            File file=new File(fileName);
            if(!file.exists())
            {
                System.out.println("文件不存在!");
            }
            else if(file.exists() && file.length() == 2)
            {
                System.out.println("文件为空!");
            }
            else
            {
                FileReader fileReader = new FileReader(fileName);
                BufferedReader bufferedReader = new BufferedReader(fileReader);
                String line;
                int i,j;
                int flag=0;
                BigInteger[] m=new BigInteger[100000000];
                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 k1=new BigInteger(k);
                       m[i]=k1;
                       if(flag==1)
                        break;
                    }
                    for(i=1;i<s.length;i++)
                    {
                     if(m[i].add(m[i-1]).intValue()>m[i].intValue())
                     {
                      m[i]=m[i].add(m[i-1]);
                     }
                    }
                    for(i=0;i<s.length;i++)
                    {
                     if(m[i].subtract(m[0]).intValue()>=0)
                     {
                      m[0]=m[i];
                     }
                    }
                    if(flag==1)
                     break;
                }
                System.out.println(m[0]);
                bufferedReader.close();
                fileReader.close();
             }
       }
    }

    结果截图

  • 相关阅读:
    Hadoop学习笔记之六:HDFS功能逻辑(2)
    Hadoop学习笔记之五:HDFS功能逻辑(1)
    Hadoop学习笔记之四:HDFS客户端
    Hadoop学习笔记之三:DataNode
    Hadoop学习笔记之二:NameNode
    MySQL不同存储引擎下optimize的用法
    Zabbix数据库表分区
    Zabbix备份数据文件
    Web性能优化之-深入理解TCP Socket
    DDOS攻击攻击种类和原理
  • 原文地址:https://www.cnblogs.com/songxinai/p/12373506.html
Copyright © 2020-2023  润新知