设计思想:1、定义一个数组,先设置循环输入数组的值,
2、在设置一个循环,定义一个整型变量w并初始化为0,依次相加,w等于相加的和,如果相加的值小于0,则w等于这个子数组的下一个数,如果没有出现小于0的情况则一直相加,
3、再定义一个整型变量sum并初始化为0,如果sum小于b的值,则令其等于w,最后输出sum即最大子数组的值
可能出现的问题:如果输入的结果全为负数,最后结果是0
解决方案:sum初始化为shuzu[0]
源代码:
1 import java.util.Random; 2 import java.util.Scanner; 3 4 5 import java.util.*; 6 public class Test { 7 8 public static void main(String[] args) { 9 // TODO 自动生成的方法存根 10 int []shuzu=new int[10]; 11 12 int i; 13 for(i=0;i<10;i++) 14 { 15 System.out.println("请输入第"+(i+1)+"个值"); 16 Scanner input=new Scanner(System.in) ; 17 shuzu[i]=input.nextInt(); 18 19 } 20 int w=0; 21 int sum=shuzu[0]; 22 23 for(i=0;i<10;i++) 24 { 25 if(w<0) 26 { 27 w=shuzu[i]; 28 } 29 else 30 { 31 w+=shuzu[i]; 32 } 33 if(sum<w) 34 { 35 sum=w; 36 } 37 } 38 39 System.out.println("最大子数组和为"+sum); 40 41 } 42 }
结果截图: