设计思想:
在前一次作业的基础上 ,当循环到达最后一位数,即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); } }
结果截图:
总结:
现在在想这次这样做会不会影响下次进阶操作呢,感觉这样做有点简单,但是确实实现功能了!