• 返回一个整数数组中最大子数组的和。(续)


    实验要求:

    1.要求数组从文件读取。

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

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

    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.math.BigInteger;
    import java.util.Scanner;
    
    public class Shuzu{
        /*public static void main(String[] args){
                Scanner sc=new Scanner(System.in);
                System.out.println("输入10个数");
                int num[]=new int[10];
                int sum=0;
                int sum1=0;
                for(int i=0;i<10;i++) {
                    num[i]=sc.nextInt();
                    if(num[i]>sum) {
                        sum=num[i];
                    }
                }
                for(int i=0;i<10;i++) {
                    sum1=num[i];
                    for(int j=i+1;j<10;j++) {
                        sum1=sum1+num[j];
                        if(sum1>sum) {
                            sum=sum1;
                        }
                    }
                }
                System.out.println("最大和为:"+sum);
           }*/
        
            static String s="";
            
        
        public static void main(String[] args) throws IOException {
    
            chansheng();
            read();
            String[] rang=s.split("[^(-9--10-9)]");
            BigInteger value=new BigInteger("0");
            BigInteger sum=new BigInteger(String.valueOf(rang[0]));
            for(int i=0;i<rang.length;i++) {
                int a=value.compareTo(BigInteger.valueOf(0));
                if(a==0||a==-1) {
                    value=new BigInteger(String.valueOf(rang[i]));
                }else {
                    value.add(new BigInteger(String.valueOf(rang[i])));
                    
                }
                if(sum.compareTo(value)==-1) {
                    sum=value;
                }
            }
            System.out.println("最大值为:"+sum);
        }
        
        
        public static String read() throws IOException {
            FileInputStream fis =new FileInputStream("leitianyushishabi.txt");
            BufferedReader br =new BufferedReader(new InputStreamReader(fis));
            String temp=" ";
            while((temp = br.readLine())!=null) {
                s= s+temp +"
    ";
            }
                fis.close();
                br.close();
                
                return s;
            
        }
        
        
        public static void chansheng() throws IOException {
            int n;
            System.out.println("请输入要产生的数量:");
            Scanner sc=new Scanner(System.in);
            n=sc.nextInt();
            File file1=new File("leitianyushishabi.txt");
            FileWriter out=new FileWriter(file1);
            BufferedWriter bw =new BufferedWriter(out);
            for(int i=0;i<n;i++) {
                int ran =(int) ((int) (Math.random()*100000000)-Math.random()*100000000);
                BigInteger a=new BigInteger(String.valueOf(ran));
                bw.write(String.valueOf(a)+" ");
            }
            bw.close();
        }
    }

    反思:自己不会的东西还是太多,看到这道题的时候自己思路混乱,分解成小问题之后也是混乱至极,以至于所有问题都没有解决,无奈之下在网上搜了别人的代码借鉴了借鉴,自己需要学习的还有很多呀

  • 相关阅读:
    Mysql 权限命令整理大全
    阿里云ECS发送邮件失败
    彻底删除Kafka中的topic
    mysql Slave 启动失败
    mysql双主热备
    mysql 主从笔记
    mysql主从同步的键值冲突问题的解决方法
    python0.2----如何在windows下搭建最简洁的python环境
    内存0.1---内存里数据的表示形式以及进制转换
    python0.1-----pyhon的优缺点,为何学习python
  • 原文地址:https://www.cnblogs.com/quyangzhangsiyuan/p/10545993.html
Copyright © 2020-2023  润新知