2014-05-18 5 views
-3

저는 대답을 찾을 수없는 것 같아요, albiet 사실 나는 아주 새로운 것이고 잘못된 것을 찾고 있습니다.나중에 사용하기 위해 while 루프에서 확인할 수있는 것을 저장합니다.

 public class ClassMethodtest { 

/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) { 

    Scanner replay = new Scanner(System.in); 

    String answer; 



    do{ 
     MoveClass newMoveClass = new MoveClass(); 

    newMoveClass.MoveAround(); 

    newMoveClass.Location(); 

      System.out.println("move again?"); 

    answer = replay.next(); 


    } while(answer.equals("yes")); 
} 




public class MoveClass { 

private final String array[] = {"A1", "A2", "A3", "A4", "B1", "B2", "B3", "B4", 
         "C1", "C2", "C3", "C4", "D1", "D2", "D3", "D4"}; 
private final Scanner kb = new Scanner(System.in);  

private String location = array[0]; 


public void MoveAround(){ 

    System.out.println("move around"); 
    String answer = kb.next(); 

    switch (location) { 
     case "A1": 
      if(answer.equals("down")){ 
       location = array[4]; 
      } 
      else if(answer.equals("right")){ 
       location = array[1]; 
      } break; 
      //etc..... 

어떻게하면 루프를 실행할 때마다 다음 번 루프 실행시 결과가 저장 되는가? 메인 클래스의 while 루프가 다시 반복 될 때 'location'의 첫 번째 decleration으로 되돌아갑니다.

+0

코드 예제는 사용자가 주장하는대로 수행하지 않습니다. 자신이 갖고있는 문제를 실제로 보여주는 예를 시도해보십시오. 이 예제에서,'x'는 루프가 시작될 때까지'1'이 될 것이고, 루프가 지속되는 동안'2'가 될 것입니다. –

+0

또한 "루프가 다시 시작될 때"의 의미를 설명합니다. 주 방법은 한 번만 실행됩니다. 루프가 다시 시작되는 이유는 무엇입니까? –

+0

"루프가 다시 시작될 때"는 무엇을 의미합니까? 그것이 루프에 머무르는 동안? 귀하의 질문에 대해 더 명확히하십시오. – trainoasis

답변

0

코드에서 코드가 do-while을 실행할 때마다 newMoveClass 개체를 다시 만들고 있습니다. 사용자가 만든 MoveClass의 인스턴스가 루프의 모든 반복에 대해 동일 있도록 다음과 같이 약간의 코드를 수정해야합니다

MoveClass newMoveClass = new MoveClass(); 

do{ 

    newMoveClass.MoveAround(); 

    newMoveClass.Location(); 

    System.out.println("move again?"); 

    answer = replay.next(); 


    } while(answer.equals("yes")); 

더 일반적인 예는 다음과 같이 보일 수 있습니다

ArrayList<Integer> results = new ArrayList<Integer>(); 

while(<some condition>) { 
    // do computation with Integer temp 
    Integer temp = new Integer(100); 
    results.add(temp); 
} 

while 루프 조건이 더 이상 유지되지 않으면 ArrayList에 결과가 표시됩니다.

+0

This * may * 대답 일지 모르지만 사용자가 묻습니다, 나는 사용자가 명확하게 할 때까지 기다리지 않을 것입니다. –

+0

정말 고마워, 완벽하게 일했다! 그것은 전문 코더들에게는별로 좋아 보이지 않을 수도 있지만 당신의 대답은 방금 나에게 많은 문호를 열었습니다. 무리 감사 :) – user3649098

관련 문제