设计思想:先让用户输入数组,再对数组进行计算。创建一个变量保存最大值,从第一个数往后一次相加,创建变量保存这个和,每次都与最大值进行比较,若和大,则赋值给最大值,若和小,再进行判断,和是否小于0,若小于0,则将和重新赋值为0,从后一位开始计算。
源代码:
package 数组1; import java.util.*; public class Shuzu1 { public static void main(String[] args){ Scanner scan=new Scanner(System.in); System.out.println("请输入数组的元素个数"); int n=scan.nextInt(); int[] shuzu=new int[n]; shuzu=fuzhi(n); int jieguo=max(shuzu); System.out.println("子数组和的最大值为:"+jieguo); } public static int[] fuzhi(int n){//数组赋值 int[] shuzu=new int[n]; Scanner s=new Scanner(System.in); for(int x=1;x<=n;){ System.out.println("请输入数组的第"+x+"个元素:"); shuzu[x-1]=s.nextInt(); x++; } return shuzu; } public static int max(int[] shuzu){//求最大值 int max=0; int l=0; for(int i=0;i<shuzu.length;i++) { l = l + shuzu[i]; if(l< 0) l = 0; else { if(l > max) max = l; } } return max; } }
运行结果截图:
总结:该算法并不难,主要在于自己要理清思路。