2013-03-13 59 views
0

我有一个java问题。将数组的整数增加到某个数(java)

我有两个int[]阵列:cdncmn
cdn{1,1,1,1,1,1,2,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
cmn{8,8,16}
我需要一个程序,增加了cdn[]的连续整数高达cmn[init]和返回的额外使用整数数量。然后它继续从下一个整数cdn[]直到cmn[init+1]加上并返回整数的个数。对于上面的数组,这是3次完成的:第一次返回值是7,第二次是7,第三次是16.可以收集整数的数量和int[],即{7,7,16}。我的代码是:

其中 m2
int numofints = 0; 
int init = 0; 
int plus = 0; 
while(init < m2){ 
for(int j = 0; j < cdn.length; j++){ 
    plus += cdn[j]; 
    numofints++; 
    if(plus == cmn[init]){ 
    init++; 
    } 
} 
} 
System.out.print(numofints); 

cmn的大小,这是3在这种情况下。请注意,我的程序一次又一次地从cdn开始循环,因为j = 0。我希望它在上一次结束的时候开始! 我希望你对我有一个解决方案。

比约恩

回答

2

只是拉j出外部循环的,并使用一个while,而不是for,为内环

,你也需要把plus = 0进入循环

public class T { 
    public static void main(String[] args) { 
    int[] cdn = {1,1,1,1,1,1,2,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}; 
    int[] cmn = {8,8,16}; 

    int numofints = 0; 
    int init = 0; 
    int m2 = 3; 

    int j = 0; 
    while(init < m2){ 
    int plus = 0; 
    while(j < cdn.length){ 
     plus += cdn[j]; 
     j++; 
     numofints++; 
     if(plus == cmn[init]){ 
      init++; 
      System.out.println(j); 
      break; 
     } 
     } 
    if (j == cdn.length) break; 
    } 
    } 
} 
+0

这段代码导致编译器卡住了。它看起来正确。你知道为什么吗? – user1189952 2013-03-13 22:30:45

+0

@ user1189952你得到了什么编译器错误? – gefei 2013-03-13 22:31:53

+0

没有错误,但我必须使用ctrl + c来终止Java。 – user1189952 2013-03-13 22:32:54

0

Shoudln't if(plus == cmn[init]){ be if(plus >= cmn[init])?如果你根本改变了cdn,并且“plus”恰好超过了“cmn [init]”,你的代码将会被破坏。