输出每一步一维数组最大子数组和

  在二维数组的每一步运行中,都在控制台输出运行到了哪里,我的方法时添加System.out.print()。

public class demo03 {
    public static void main(String[] args) throws IOException {
        int max= 2147483647;
        String c=null;
        Random rand = new Random();
        ArrayList<String> list = new ArrayList<String>();
        File file = new File("E:/f1.txt");
        if(!file.exists()) {
             System.out.println("file inexists");
             System.exit(0);
        }
        String[] split1=null;
        try {
            BufferedReader br = new BufferedReader(new FileReader(file));
            String line;
            
            while ((line = br.readLine()) != null) {
                split1 = line.split("\\s+");
                }
            for(int i=0;i<split1.length;i++) {
                list.add(split1[i]);
            }
            for(int i=0;i<list.size();i++) {
                System.out.print(list.get(i)+" ");
            }
            }finally {
                 Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");
                for(int i=0;i<list.size();) {
                 boolean bool=true;
                 bool=(boolean)pattern.matcher(list.get(i)).matches();
                 String v=list.get(i);
                 if(bool==true) {
                     i++;
                 }
                 else {
                     int b=rand.nextInt(max);
                     int num=rand.nextInt(2);
                     if(num==1) {     
                            c="-"+String.valueOf(b);
                     }
                     else {
                         c=String.valueOf(b);
                     }
                    list.set(i, c);
                     System.out.println("Warning!Data not standardized.Revised:"+c);
                     i++;
                  }
                }
            }
        /*
         * 
         * 
         * 
         */
        int q=0;
        ArrayList<Integer> array=new ArrayList<Integer>();
        int sum=0;            //子数组的和
        int x=0;
        for(int i=0;i<list.size();i++) {
            x=Integer.parseInt(list.get(i));
            array.add(x);
        }
        max=array.get(0);        //设最大子数组和为第一个
        for(int i=0;i<array.size();i++) {
            if(sum<=0) {
                sum=array.get(i);
                System.out.println();
                System.out.print("第"+(i+1)+"个数是"+sum);
                System.out.println();
            }
            else {
                sum=sum+array.get(i);
                System.out.println("第"+(i+1)+"个数是"+array.get(i));
                System.out.print("第"+i+"次和是"+sum);
                System.out.println();
            }
            if(sum>max) {
                max=sum;
                System.out.print("此时的子数组最大值是"+max);
                System.out.println();
            }
            System.out.println("已检查"+(i+1)+"个数");
            /*if(i+1==array.size()) {
                q++;
                if(q==2) {
                    break;
                }
                else {
                    i=0;
                }
            }*/
        }
        System.out.println("连续子元素的最大和为"+max);
        
    }

}

运行截图:

猜你喜欢

转载自www.cnblogs.com/YXSZ/p/10770455.html