1.设计思想
(1)首先创建一个一维数组a[],根据用户输入的数组长度及数组内容进行存储数据。
(2)再定义几个变量,sum用于求和,max为和最大值,num为数组长度。
(3)开始for循环,sum初始化为0,max初始化为a[0]。循环内容为sum+=a[i];如果sum比max大则将sum值赋给max,如果sum小于0,则定义sum=0。直至循环结束,得到最大子数组的和。
2.源程序代码
//返回一个一维整数数组最大子数组和最大值 package ketang; import java.util.*; public class ArrayMax { public static void main(String[] args) { Scanner sca=new Scanner(System.in); System.out.println("输入整数数组数的个数"); int num=sca.nextInt(); int a[]; a=new int[num]; System.out.println("输入数组的数"); int i; for(i=0;i<num;i++) { a[i]=sca.nextInt(); } int sum=0,max=a[0]; for(i=0;i<num;i++) { sum+=a[i]; if(max<sum) { max=sum; } if(sum<0) { sum=0; } } System.out.println("最大子数组和为 "+max); } }
3.结果截图
4.编程总结
听了文同学的设计思路,感觉他的方法比我之前的方法简单,然后借鉴他的方法,写出了这篇代码。