思路:
设定三个变量,result分别是(子数组中的和的最大值,初始值为array[0])、result(当前子数组的和,初始值为array[0]);
先让用户自己设定数组的长度,之后输入数组。从数组第一位开始遍历数组, max=max+array[i],若result<0,则令max=0;若max>result,则result=max;最后当循环运行结束后,输出最后result的值。
问题
计算结果时for循环起始值应从1开始,若从0起始的话会多算一遍数组array[0];
package shuzhi; import java.util.Scanner; public class shuzuzhi { public static void main(String[] args) { // TODO Auto-generated method stub Scanner in=new Scanner(System.in); System.out.println("请输入数组长度:"); int n=in.nextInt(); int array[]=new int[n]; System.out.println("请输入相应的整数:"); for(int i=0;i<n;i++) { array[i]=in.nextInt(); } int max=array[0]; int result =array[0]; for(int i=1;i<n;i++) { max=max+array[i]; if(max<0) { max=0; } if(max>result) { result=max; } } System.out.print("子数组的最大值为:"+result); } }
截图: