第六周课堂测试

设计思想:

在前一次作业的基础上 ,当循环到达最后一位数,即len[num-1]时,对最后一个数进行判断,如果大于零(若小于零,则没有必要了),则重置i(因为循环开始时便是i++,所以这里重置i为-1);

同时对另外一个计数变量m(统计循环次数,方便进行跳出循环操作,防止陷入无限循环)进行叠加,之后对m进行判断,当m=2时,就要进行第三次循环了,而这次循环是无效的,所以此时利用改变i值跳出循环;

统计完成,输出最终结果;

源代码:

package max;
import java.util.*;
public class Array_max {
    public static int Cin(int i){
        Scanner in=new Scanner(System.in);
        System.out.println("请输入第"+(i+1)+"个数");
        int b=in.nextInt();
        return b;
    }
    public static int Get(int len[],int num){
        int max = 0;
        int max0=0;
        int m=0;
        for(int i=0;i<num;i++){
            if(len[i]>0){
                max=max+len[i];
            }
            else{
                if(max>max0){
                    max0=max;
                }
                max=0;
            }
            if(i==(num-1)&&len[num-1]>0){
                i=-1;
                m++;
            }
            if(m==2){
                i=num;
            }
        }
        if(max>max0){
            max0=max;
        }
        return max0;
    }
    public static void main(String args[]){
        Scanner in=new Scanner(System.in);
        System.out.println("请输入数组数字个数:");
        int num=in.nextInt();
        int len[]=new int[num];
        for(int i=0;i<num;i++){
            len[i]=Cin(i);
        }
        int max=Get(len,num);
        System.out.print("子数组和的最大值为:"+max);
    }
}

结果截图:

总结:

现在在想这次这样做会不会影响下次进阶操作呢,感觉这样做有点简单,但是确实实现功能了!

原文地址:https://www.cnblogs.com/dawn-sky/p/5378081.html