나는 항상 문이 거짓으로 선언 된 경우 boolean valid = false
과 같이 !valid
을 쓰면 valid
이 true가되도록 뒤집을 것이라고 항상 가정합니다. 그러나 이것은 완전히 잘못된 오해였습니까? 예를 들어, 아래 코드에서; 거짓 부울에 대한 not 문 사용
for (int check=3; check <= primeLimit; check += 2) {
boolean divisorFound=false;
for (int div=3; div<=Math.sqrt(check) && !divisorFound; div += 2) {
if (check%div==0)
divisorFound=true;
}
는
divisorFound
검색 루프에 대한 두 번째는 허위의 사실 있나요? 은 제수가 거짓임을 암시하는 경우 때문에 것은 그냥 말을하지 :
div<=Math.sqrt(check) && divisorFound;
여기서 for 루프는! divisorFound를 검색하여 중지되도록하고 divisorFound를 검색하여 중지하도록합니다. 조언; for 루프는 정확히 n 번 반복되는 것에 전념합니다. 부울 변수를 사용하려면 while 루프가 더 유용합니다. –
@pbabcdefp, 고맙습니다. 바로 그 점을 분명히하고 싶습니다. 너무 사소한 것처럼 보이기 때문에 나는이 질문에 당혹 스럽다. 그러나 이중 부정은 항상 나를 혼란스럽게했다. 그리고이 코드는 루프를 실행하기 위해 divisorFound가 false 여야한다는 것을 암시한다고 생각했지만 단순히 divisorFound를 true로 설정하는 조건이있을 때까지 실행될 것이라고 말하고있었습니다. – kris
괜찮습니다. 간단한 질문에 잘못된 것은 없습니다. 나는 정말로 기본적인 실수를 항상한다. 나는 정말로내는 오류가 포함되어있어서 내 의견을 삭제해야만했다. 변수를 추적하고 진행 상황을 보려면'System.out.println (...)'을 많이 사용하는 것이 좋습니다. 그것은 매우 효과적인 학습 방법입니다. –