2013-03-13 60 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]」,你的代碼將會被破壞。