Java数据结构学习脚印-UC Berkeley练习

练习4:编写一个函数windowPosSum(int[] a, int n),将每个元素替换a[i]a[i]through 的总和a[i + n],但前提a[i]是值为正。如果由于到达数组的末尾而没有足够的值,则我们仅求和多少个值。

例如,假设我们windowPosSum使用a = {1, 2, -3, 4, 5, 4},和数组进行调用n = 3在这种情况下,我们将:

  • 替换a[0]a[0] + a[1] + a[2] + a[3]
  • 替换a[1]a[1] + a[2] + a[3] + a[4]
  • 不做任何事情,a[2]因为它是负面的。
  • 替换a[3]a[3] + a[4] + a[5]
  • 替换a[4]a[4] + a[5]
  • 不执行任何操作,a[5]因为之后没有值a[5]

因此,调用后的结果windowPosSum将为{4, 8, -3, 13, 9, 4}

public class BreakContinue1{
    public static void windowPosSum(int[] a,int n){
        int i=0,j=0;
        for(i=0;i<a.length;i++){
            if(a[i]<0)
            {
                continue;
            }
            for(j=i;j<i+n;j++){
                if(j+1>=a.length)
                    break;
                a[i]=a[i]+a[j+1];
            }
        }    
    }
    public static void main(String[] args) {
        int[] a = {1, 2, -3, 4, 5, 4};
        int n = 3;
        windowPosSum(a, n);
        // Should print 4, 8, -3, 13, 9, 4
        System.out.println(java.util.Arrays.toString(a));
    }
}

这个练习很好地证明了continue和break的强大,简洁明了地解决了。不用这两个关键字也可以写出来,只不过代码会比较冗余。

原文地址:https://www.cnblogs.com/zyycumt/p/13251686.html