发表一篇博客文章讲述设计思想,出现的问题,可能的解决方案(多选)、源代码、结果截图、总结。
1>设计思想
1.首先定义循环,输入要处理的数组a[5];
2.定义一个整型数b,初始化为0,和求最大子数组的sum,初始化为0,然后设置循环,每进行一次循环,b等于b加上a[i],如果sum小于b,sum
等于b ,如果b小于0,b就等于下一个数。
3.最后输出sum
2>出现的问题
如果输入的都是负数,结果为0
3>解决方案
将b初始化为a[0]
4>源代码
import java.util.*;
/*
求最大子数组问题
要求数组中有正也有负数,如果全为负数,只需要找出
最大的负数即可。
*/
public class Shuzuhe {
public static void main(String[] args){
Scanner sc=new Scanner(System.in); //可以读出输入的数
int a[]=new int[5];//定义一个长为5 的数组,作为输入数组
System.out.println("请输入要进行处理的数(5个):");
for(int i=0;i<5;i++)//输入5个数
{
a[i]=sc.nextInt();
}
int sum=a[0];//用于记录和
int b=0;//用于每次运算,找最大子数组
for(int i=0;i<5;i++)
{
if(b<0)
{
b=a[i]; //如果b<0,将b移到加为负数那位的后一位
}
else
{
b+=a[i];
}
if(sum<b)
{
sum=b; //sum为当前最大子数组的和
}
}
System.out.print("最大子数组为:");
System.out.print(sum);
}
}
4>结果截图
5>总结
这次没注意到将b初始化为a[0],所以造成全是负数时,结果为0