zoukankan      html  css  js  c++  java
  • 数组(续)

    要求:数组从文件中读取

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

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

    设计思路: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();
             }
       }
    }

    结果截图

  • 相关阅读:
    es6 数组的扩展
    面向对象的7大原则及其实例
    flex 布局
    一、创建vue
    箭头函数
    destructuring
    spreed&rest
    变量新声明之let、const
    jQuery之遍历索引相关方法
    jQuery之位置坐标图形相关方法
  • 原文地址:https://www.cnblogs.com/songxinai/p/12373506.html
Copyright © 2011-2022 走看看