个人作业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("查找文件不存在。");
        }
        }
}        

结果截图:

这是文件中的数据

这是实验结果。

个人反思:

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

原文地址:https://www.cnblogs.com/Excusezuo/p/10545776.html