标签:
设计思想:输入一定长度的数组,分别以每个数为数组的开头,进行一维非环的数组求最大值,得出最大值,为首尾相接的数组的最大值,
程序源代码:
package sumarray; import java.util.InputMismatchException; import java.util.Scanner; public class MaxSum { public static void main(String args[]) { int maxsum=0,sum=0;//maxsum为sum中的最大值,sum为i到i+x的和 int array[]=new int[10]; Scanner in=new Scanner(System.in); System.out.print("请输入5个整数:"); for(int i=0;i<5;i++) { try//验证输入是否合法 { array[i]=in.nextInt(); array[i+5]=array[i]; } catch(InputMismatchException e) { break; } }for(int i=0;i<5;i++)//以每个数为开头进行最大值求解 { sum=0; for(int j=0;j<5;j++)//非环形数组求最大值 { if(sum<0) sum=0; sum+=array[i+j]; if(sum>maxsum) maxsum=sum; } } System.out.print("子数组的最大值为:"+maxsum); } }
实验结果截图:
编号 | 缺陷 | 解决方法 |
01 | 只能输入五个数 | 未解决,可以增加设置数组长度大 |
02 | 数值不能过大 | 大数的存储与比较,将int设为String |
标签:
原文地址:http://www.cnblogs.com/myblog-2015/p/5396970.html