2013-03-13 3 views
0

자바 질문이 있습니다.일부 배열의 정수 추가 (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 내가 cmn[init] 개까지 cdn[]의 연속 정수를 추가하고 추가로 사용되는 정수의 수를 반환하는 프로그램이 필요 {8,8,16}
입니다. 그런 다음 cdn[]까지 cmn[init+1]까지 다음 정수를 더하고 정수의 수를 반환합니다. 위의 배열에 대해이 작업은 세 번 수행됩니다. 첫 번째 반환 값은 7이고 두 번째 값은 7이며 세 번째 값은 16입니다. 정수의 수는 {7,7,16}int[]에 수집 할 수 있습니다. 내가 가진 코드는 다음과 같습니다

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); 

하는 m2이 경우 3 인 cmn의 크기이다. j = 0이 있기 때문에 내 프로그램이 처음부터 cdn의 처음부터 반복되기 시작합니다. 이전 시간이 끝난 곳에서 시작하고 싶습니다! 나를위한 해결책이 있기를 바랍니다.

비요른은

답변

2

단지 외부 루프에서 j을 당겨, 그리고 내부 루프

당신은 또한 루프

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; 
    } 
    } 
} 
plus = 0를 둘 필요가 들어 for 대신하는 while를 사용
+0

이 코드로 인해 컴파일러가 작동하지 않습니다. 그래도 괜찮아. 왜 그런지 알아? – user1189952

+0

@ user1189952 어떤 컴파일러 오류가 발생합니까? – gefei

+0

오류는 없지만 ctrl + c를 사용하여 Java를 종료해야합니다. – user1189952

0

Shuchln't if(plus == cmn[init]){if(plus >= cmn[init])입니까? cdn을 전혀 변경하지 않고 "plus"가 "cmn [init]"으로 넘어 간다면 코드가 깨질 것입니다.