문제

나는 그 모습을 볼 때 : 다음과 같습니다.

User user = userDao.Get(1);

do
{
 // processing


 // get the next user
 //
 user = UserDao.GetNext(user.Id);

 if(user == null)
       continue;   // will this work?????????????
}
while ( user != null)

그것이 작동한다면, 그것은 do 진술의 맨 위로 가고, 사용자가 무효화되어 상황이 깨질 것입니까?

어쩌면 나는 루프를 잠시 문장으로 재 작업해야합니까?

도움이 되었습니까?

해결책

계속해서 Botton의 평가로 점프하면 프로그램이 다른 반복 또는 종료를 계속 해야하는지 평가할 수 있습니다. 이 경우 종료됩니다.

이것은 사양입니다. http://java.sun.com/docs/books/jls/third_edition/html/statements.html#6045

이러한 언어 질문은 Java 언어 사양에서 검색 할 수 있습니다. http://java.sun.com/docs/books/jls/

다른 팁

이것은 실제로이 코드를 작성하는 가장 좋은 방법이 아닙니다. 사용자가 NULL 인 경우 다음에 사용자를 얻으려고 시도하면 NULLPOINETEREXCEPTION이됩니다. 더 좋은 방법은 다음과 같습니다.

User user = UserDao.Get(1);
while(user != null) {
  // do something with the user
  user = UserDao.GetNext(user.id);
}

두 곳에서 사용자를 테스트하는 이유는 무엇입니까? 사용자가 NULL 일 때 조건이 루프를 종료합니다. 이것이 바로 원하는 것입니다.

예, continue 루프를 통해 작동합니다.

당신은 아마 사용하고 싶을 것입니다 break 대신에 continue 사용자 처리를 중지하거나 if null continue 어쨌든 사용자가 null이 되 자마자 while 루프가 나오기 때문에 완전히 비트.

짧은 대답 예, 루프 중에 수행하는 동안 계속 작동하고 휴식을 취하십시오.

다른 사람들이 지적했듯이, 예에서 나오면 계속해서 잘못된 행동을 기대하고있는 것처럼 보입니다.

보자 :

$cat DoWhileContinue.java 
class DoWhileContinue {

    public static void main( String [] args ) {
        int i = 0;
        int y = 0;
        do {
            i++;
            if( i > 100 ) {
                continue;
            }
            y++;

        } while( i < 500  );
        System.out.printf("i=%d, y=%d %n", i, y );
    }
}
$javac DoWhileContinue.java 
$java DoWhileContinue
i=500, y=100 

예, 그렇습니다. 이 샘플에서는 볼 수 있습니다 y 가치는입니다 100 때문에 continue 성명서가 실행되었고 그 후 변수가 증가하지 못했습니다.

계속해서는 동일한 것을 평가하는 동안 귀하의 IF와 동안 중복 된 것처럼 보이는 While 내부의 루프 평가 명령문으로 이동합니다. 나는 휴식을 사용하거나 단순히 잠시 조건이 작업을 수행하는 것이 더 낫다고 생각합니다 (당신의 상태는 이미 당신을 위해 그것을 확인하고 있습니다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top