• 数组从文件读取判断子数组的最大值


    1.设计思路:想要从文件中读取数据,首先要建一个文件用来进行文件的读写,接着要通过for循环将读取出来的数值存储到数组中,我用的是ArrayList()定义的数组,完成文件中数据存储后,它的类型是String类型,此时就需要将此数组转换成为int类型的数组。然后和求子数组的最大和连接就行。

    2.源程序代码:

    package shuzu;
    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.math.BigInteger;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Scanner;
    
    public class ArrayMax {
        public static void main(String[] args){
            //
            File a=new File("d:/text1.txt");
            BufferedWriter writer=null;
            try {
                writer=new BufferedWriter(new FileWriter(a));
            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }
            Scanner sc=new Scanner(System.in);
            System.out.println("请输入数组中数字个数的大小");
            long aa=sc.nextLong();
            for(long i=0;i<aa;i++) {
                long l=(long)(100-(Math.random()*10000)*(Math.random()>0.5?1:-1));//随机数
                String s=""+l;   //把l变为string类型                  如果大于0.5取1小于0.5取-1
                try {
                    writer.write(s);
                } catch (Exception e) {
                    // TODO: handle exception
                }
                try {
                    writer.newLine();//换行
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
                try {
                    writer.close();//写文件后关闭
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            //
            BufferedReader br = null;
             try {
                br=new BufferedReader(new FileReader(a));
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
            String line;
            //需要转换为int
            ArrayList<String> d=new ArrayList<String>();
    //        ArrayList d=new ArrayList();
            try {
                while((line=br.readLine())!=null ) {
                //System.out.println(line);
                 d.add(line);
                 }
                int i=d.size();
                //System.out.println("i:"+i);
                br.close();
                writer.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            int tt[]=new int[d.size()];
            for(int i=0;i<d.size();i++) {
                int s=Integer.parseInt(d.get(i));
                tt[i]=s;
                System.out.println("tt="+tt[i]);
            }
            int maxsum,maxstart;
    //        Scanner in = new Scanner(System.in);
    //        System.out.println("请输入数组的大小:");
    //        number=in.nextInt();
     //         int [] array=new int[number];
    //        System.out.println("请输入数组的值:");
    //        for(i=0;i<number;i++)
    //        {
    //            array[i]=in.nextInt();
    //        }
            maxsum=tt[0];
            maxstart=tt[0];
            for(int i=1;i<d.size();i++)
            {
                if(maxstart<0)
                {
                   maxstart=0;
                }
                maxstart+=tt[i];
                if(maxstart>maxsum)
                    maxsum=maxstart;
                
            }
            System.out.println("子数组的最大和为:");
            System.out.println(maxsum);
           
        }
    
    }

    3.结果截图:

    4.个人反思:做此实验我从中学到了很多教训,首先就是文件的读写,通过将不同方法和类组合在一起可以写出一个功能强大的程序,但前提是需要了解各种函数的作用和使用方法。然后才能下手去做,接着就是各种类型之间的转换,例如String类型和int类型之间的转换就需要Integer.parseInt()函数,以后我会再接再厉,争取学好这门课程。

  • 相关阅读:
    godaddy掉包抽风实况记录
    多步 OLE DB 操作产生错误。如果可能,请检查每个 OLE DB 状态值。没有工作被完成
    Godaddy空间访问过慢 或是联通/网通运营商限制
    A4纸网页打印中对应像素的设定和换算
    lnmp下 nginx服务器 shopex 安装 出现502 Bad Gateway
    时代互联域名管理后台增加二级域名的方法
    简单的会员系统
    图文讲解如何在godaddy注册的域名如何修改DNS指向
    距离计算方法总结
    今天开始学模式识别与机器学习Pattern Recognition and Machine Learning 书,章节1.1,多项式曲线拟合(Polynomial Curve Fitting)
  • 原文地址:https://www.cnblogs.com/1502762920-com/p/10543421.html
Copyright © 2020-2023  润新知