여기가 - if (code<10 || code>99)
인 것으로 보입니다. 범위를 벗어나는 숫자를 입력하면 루프가 무한히 계속되어 겉으로는 조건을 무시합니다. 나는 System.exit(0)
을 시도했지만, while 루프를 사용하여 코드를 멈추고 싶습니다.Java 부울 조건 while 루프는 if 문을 무시합니다?
import java.util.*;
public class LockPicker {
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
Random r = new Random();
boolean stop = false;
while (!stop) {
System.out.print("What is the unlock code? ");
int code = kb.nextInt();
if (code<10 || code>99) {
System.out.println("Your number must be between 10 and 99");
stop = !stop;
}
System.out.println("Picking the lock...");
System.out.println("");
int x = -1, counter = 0;
while (x!=code) {
x = r.nextInt(90)+10;
System.out.println(x);
counter++;
}
System.out.println("That took only "+counter+" tries to pick the lock!");
stop = !stop;
}
}
}
if 문이 제대로 실행되고 stop이 true로 설정되었지만 실행이 계속되고 루프 본문의 마지막 문이 stop 값을 반대로 다시 false로 설정합니다. – hatchet
나는 항상 newbie 개발자들이 break 조건에서 사용 된 boolean을 부정하는 것에 문제가 있다는 것을 알고있다. 새로운 개발자에게 나의 제안은 긍정적 인 논리로 사물을 표현하려고 노력하는 것입니다. 예 : 'boolean continueLooping = true; '(continueLooping) {...} while (continueLooping) {...} 또한 토글을 사용하지 않고 값을 명시 적으로 설정합니다 (예 :'continueLooping = false;'). – hfontanez