软件工程第二周个人作业

package text;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class three {
    
    public static int length=0;
    
    public static int[] readArray() {
        int[] a = new int[100];
        int t;
        String num="";
        try {
            BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\AZ\\Desktop\\Array.txt"));
            while ((t = br.read()) != -1) {
                if(t==45 && num=="") {    
                    num="-";
                    continue;
                }
                if(t>=48 && t<=57)   
                    num += (char)t;
                if((t<48 || t>57) && num!="" && num!="-") {  
                    a[length++]=Integer.parseInt(num);
                    if(t==45)        
                        num="-";
                    else
                        num="";
                }
            }
            if(!(num=="" || num=="-"))  
                a[length++]=Integer.parseInt(num);            
            br.close();
        } catch (FileNotFoundException e) {
            System.out.println("文件不存在!");
        } catch (IOException e) {
            System.out.println("文件读取异常!");
        } 
        return a;
    }
    
    public static void maxnumber(int[] a) {
        int[] b = new int[100]; 
        b[0] = a[0];
        int j=0,max=0,maxnum=0;
        for(int i=1;i<length;i++) {
            if(a[i]<0 && b[j]>0)
                b[++j] = a[i];
            else if(a[i]>0 && b[j]<0)
                b[++j] = a[i];
            else if(a[i]<=0 && b[j]<0)
                b[j] += a[i];
            else if(a[i]>=0 && b[j]>0)
                b[j] += a[i];
        }
       
        if(b[0]<=0 && b[1]==0) {    
            max=a[0];
            for(int i=1;i<10;i++)
                if(max<a[i])
                    max=a[i];
        } 
        else {
            max=b[0];
            for(int i=0;i<=j;i++)
                if(max<b[i]) {
                    max=b[i];
                    maxnum=i;
                }
            int t=0;
            for(int i=maxnum;i<=j-2;i+=2) {    
                t=t+b[i+1]+b[i+2];        
                if(t>0) {
                    max+=t;
                    t=0;
                }
            }
            t=0;
            for(int i=maxnum;i>=2;i-=2) {   
                t=t+b[i-1]+b[i-2];        
                if(t>0) {
                    max+=t;
                    t=0;
                }
            }
        }    
        System.out.println("最大子数组的和为:" + max);
    }
    public static void main(String[] args) {
        maxnumber(readArray());
    }
}

 

 

 

能做到读取文件,不过程序的健壮性不敢保证。

 

posted @ 2020-02-28 17:38  vvxvv  阅读(168)  评论(0编辑  收藏  举报