• 个人作业02


    紧接上次要求,这次的作业添加了新的功能:

    要求数组从文件读取。

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

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

    设计思路:

    1.定义一个一维数组用来记录读取的数据

    2.定义length用以统计文件中数据的个数。

    3.读取文件中的数据,存储在数组中。

    4.比较求和,输出最大值。

    源代码:

    package project;
    import java.io.BufferedReader;
    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.util.List;
    import java.util.Scanner;
    public class read1 
    {
        public static void main(String args[])
        {
            String p="D:\1.txt";
            File f=new File(p);
            if(f.isFile())
            {
            if(f.exists())
            {
            System.out.println("文件存在。");
            File file = new File("D:\1.txt");
                if(file.exists() && file.length() == 0) {  
                System.out.println("文件为空,请输入数据");  
                }  
                else {
                long array[]=new long[1000000];
                long length=0;
                long sum,a;
                //读取数据
                    BufferedReader br = null;
                    try {
                        br = new BufferedReader(new FileReader(file));
                    } catch (FileNotFoundException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }    
                        
                        String tmp;
                        try {int i=0;
                            while((tmp = br.readLine()) != null){
                                array[i]=Integer.parseInt(tmp);
                                i++;
                                length++;
                            }
                        } catch (NumberFormatException e) {
                            e.printStackTrace();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                        try {
                            br.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                        sum=(int) array[0];
                        a=(int) array[0];
                        for(int i=1;i<length;i++)
                        {
                            if(a<0)
                            {
                                a=0;
                            }
                            a+=array[i];
                            if(a>0)
                            {
                                sum=a;
                            }
                        }
                        System.out.println("数组最大值为:"+sum);
                    }
    
                }
            }
        else    
            {
            System.out.println("查找文件不存在。");
            }
            }
    }        

    结果截图:

    这是文件中的数据

    这是实验结果。

    个人反思:

    这次的作业只完成了前两点,处理异常突发问题还是不太理解,程序修改了很多次也一直在报错,无奈放弃。

  • 相关阅读:
    每天30分钟搞Software Rendering(0)搜集资料,阅读,了解
    [Flash开发笔记]如何让Flash的swf文件在客户端不缓存
    FMS 中文帮助 (下载)
    [Flash开发笔记] List控件删除指定label或data的项
    用C#截取指定长度的中英文混合字符串 改进版
    [Flash开发笔记] AS中保留多少位小数的函数
    [Flash开发笔记] ComboBox,List组件的二个函数
    [FMS开发笔记]理解应用程序实例(聊天室房间的划分)
    [Flash开发笔记] 系列
    FMS如何连接FlashRemoting?(附示例源码下载)
  • 原文地址:https://www.cnblogs.com/Excusezuo/p/10545776.html
Copyright © 2020-2023  润新知