2013-10-22 1 views
1

가장 최근에 생성 된 로봇을 앞으로 움직여서 모든 경고음을 들려주는 벽에 도달 할 때까지 clearStacks()라는 메서드를 작성해야합니다. 이 메서드는 아무 값도 반환하지 않고 이며 매개 변수를 사용하지 않아야합니다. 또한 부작용이 있습니다.이 메서드는 로봇이 각 스택에서 감지 한 비퍼 수를 인쇄합니다. 3 스택 행에 있었다 가정하면, 출력은 다음과 같습니다Java에서 스택의 경고음을 계산합니다.

삐삐 : 4 삐삐 : 1 개 삐삐 : 7

나는 로봇에 집어 얼마나 많은 삐삐 쓸 수 없습니다

내 문제 각 스택. 전체 금액 만. 나는 내 코드 .. 자바에 새로운 오전 :

void clearStacks() { 
int beepers=0; 
while(isSpaceInFrontOfRobotClear()) { 
    moveRobotForwards(); 
    while(isItemOnGroundAtRobot()) { 
     pickUpItemWithRobot(); 
     ++beepers; 
     println(beepers); 
    } 
} 
} 

답변

2

스택을 검사하기 전에, 당신은 당신의 수를 재설정 할 수 있습니다. 그런 다음 조건문을 사용하여 스택을 지운 후에 비퍼가 선택되었는지 (또는 스택이 없는지 확인) 필요합니다.

void clearStacks() { 
    int beepers=0; 
    while(isSpaceInFrontOfRobotClear()) { 
     moveRobotForwards(); 

     /* Reset the count of beepers. */ 
     beepers = 0; 

     /* Pick up any beepers at current spot. */ 
     while(isItemOnGroundAtRobot()) { 

      /* Pick up beeper, and increment counter. */ 
      pickUpItemWithRobot(); 
      ++beepers; 

     } 

     /* Check to see if we picked up any beepers. 
     * if we did, print the amount. 
     */ 
     if(beepers > 0){ 
      println(beepers); 
     } 
    } 
} 
0

배열 구현을 시도해보십시오. 처음 세 개의 요소를 사용하여 처음 3 개의 스택을 나타낼 수 있으며, 그 값은 각 스택에서 얼마나 많은 수의 비퍼가 선택되었는지 나타낼 수 있습니다.

int[] beepers = new int[3]; 
int count = 0; 
while(isSpaceInFrontOfRobotClear()) { 
    moveRobotForwards(); 
    while(isItemOnGroundAtRobot()) { 
     pickUpItemWithRobot(); 
     beepers[0]++; 
     if (count > #numberOfBeepers) { 
       break; 
     } 
    } 
    for (int i: beepers) { 
      System.out.print(beepers[i] + " ") 
     } 
    } 
} 

이 귀하의 질문에 답을 알려줘하거나

+0

를하지 않았다 경우 사전에 발생 될 수 스택을 알 수 없습니다. 또한 배열 인덱스를 변경하지 마십시오. – Dev

관련 문제