2017-12-07 4 views
0

배열에서 일치하는 요소를 모두 합산하려면 어떻게합니까? 나는 현재 중첩 된 for 루프를 사용하려고하지만 숫자가 2 번 이상 발생하면 total.I 전체를 합산하지 않습니다. 여기에 작은 값이 누락 된 것 같습니다. 배열에서 일치하는 요소를 모두 합산합니다.

public class Game { 
ColoredDice dice[] = new ColoredDice[6]; 
private int diceValues[] = new int[6]; 

public Game() { 
    rollSixDice(); 
    score(); 
} 

public void rollSixDice(){ 
    for(int i = 0;i < 6;i++){ 
     dice[i] = new ColoredDice(); 
    } 
    // getDiceValue returns the int value of the die 
    for(int i =0;i<dice.length;i++){ 
     diceValues[i] = dice[i].getDiceValue(); 
    } 
} 

public void score(){ 
    for(int i=0;i<dice.length;i++){ 
     for(int j = i+1 ;j < 6;j++){ 
      if(dice[i].getDiceValue() == diceValues[j]){ 
       score += dice[i].getDiceValue(); 
      } 
     } 
    } 
    System.out.println(score); 
    } 
} 


public class DiceTester { 
public static void main(String[] args) { 
new Game(); 
    } 
} 

무슨 일에 무엇을 지우기보다 되려면 .. 여기 두 배열은 동일하고 int 타입이다. 역할 값 예 : 2,3,4,2,6,6. 점수 :

+0

[mcve]를 게시 할 수 있습니까 –

+0

이 코드에서 디버깅의 증거가 없으므로이 질문을 downvoted했습니다. 귀하의 질문을 편집하여 귀하의 디버깅이 밝혀낸 바를 알려주십시오. 또한 특정 코드 행에 관한 특정 질문을 보여주십시오. 참조 : [최소, 완전하며 검증 가능한 예제를 만드는 방법] (http://stackoverflow.com/help/mcve) 및 [소규모 프로그램을 디버깅하는 방법] (https://ericlippert.com/2014/03/05)/how-to-debug-small-programs /) –

답변

0

8 당신이 시도 할 수

for(int i=0;i < dice.length;i++){ 
     for(int j =i+1;j < dice.length;j++){ 
      if(dice[i].getDiceValue() == dice[j].getDiceValue()){ 
       score += dice[i].getDiceValue(); 
      } 
     } 
    } 
+1

도움이되기를 바랍니다. [help]에 명시된 품질 기준을 충족시키지 못하는 질문에 답하지 않도록하십시오. –

+0

물론, 나는 그것을 메모 할 것입니다. :) – Santosh

0
키는 그룹을 원하는 값이 sum.This은 O (N)에 공간의 복잡성을 증가 할 것입니다있는 곳에 당신은 해시 맵을 사용할 수 있습니다

및 시간 복잡도 O (N). 또는 먼저 정렬하여 동일한 요소를 연속적으로 합하여 O (nlogn)을 수행 할 수 있습니다.

관련 문제