+1 Daniel DiPaolo. 나는 이유를 명확히하기 위해 별도의 답변을 게시 할 것입니다. 이유는입니다.
Java의 루프는 두 가지 방법 중 하나로 작성 될 수 있습니다. 루프의 몸에 하나의 라인이 있다면, 당신은 짧은 손 방식을 쓸 수 있습니다 : 프로그램이 끝날 때까지이 콘솔의 "루프 동안"인쇄됩니다
while (true)
System.out.println("While loop");
. 위에서했던 것처럼 다른 옵션은 중괄호 사이에 루프 본문을 지정하는 것입니다 :
int i = 0;
while (i < 10) {
System.out.println("i = " + i);
i++;
}
이 인쇄됩니다 "나는 = 0", "I = 1", ..., "I = 9" 각각은 별도의 줄에 있습니다.
게시 한 코드가 두 코드를 혼동합니다. 단시간 while 루프에서 Java 파서는 while 루프 조건과 세미콜론 사이의 명령문을 찾으려고합니다. 여기서는 성명을 찾지 못하기 때문에 while 루프가 실행되지만 아무것도 수행하지 않습니다. 시체가 없다. 또한 루프에는 본문이 없기 때문에 변수 r이 새 값을 가질 기회가 없습니다. 조건은 항상 true로 평가되고 루프는 종료되지 않습니다.
당신이 당신의 예에서 while 루프의 조건을 부정 즉,
boolean r = false ; int s = 0 ;
while (r != false) ;
{
s = getInt() ;
if (!(s>=0 && s<=2)) System.out.println ("try again not a valid response") ;
else r = true ;
}
이 (내가 거기에 잘못된 세미콜론을 왼쪽 주)한다면, 당신은 당신의 목적 루프 본문 정확하게 실행할 것을 찾아 낼 것입니다 한 번 루프가 실행되지 않을 것입니다.
또한 무한 루프가 아니므로 '무한 루프'태그는 의미가 없습니다. –
사실 그것은 무한 루프입니다. 'while (r == false);'는 r을 false로 초기화 했으므로 아무것도하지 않는 무한 루프입니다. –
한 줄에 여러 항목 넣기를 중지하십시오. 무엇보다도, 이것은 당신의 문제를 일으킨 것입니다. 글쓰기 습관이 생기면 이런 일이 훨씬 줄어 듭니다. 또한 이클립스에서 경고를 설정하십시오 - 그것은 당신에게 빈 성명을 지적해야합니다. 이 문제를 해결하지 않고 근본 원인을 수정하십시오. –