2012-11-16 2 views
0
string confirm = ""; 

        while (confirm != "y" || confirm != "n") 
        { 
         Console.Write("Remove {0}' account? (Y/N): ", Accounts[accountNumber].Name); 
         confirm = Console.ReadLine(); 
         confirm = confirm.ToLower(); 
        } 

알 수없는 이유로 내 루프가 검사에 실패했습니다. 확인이 "n"또는 "y"인 경우에도 여전히 반복됩니다. 심지어는 "n"또는 "y"중 하나와 정확히 일치하는지 확인했습니다. 중단 점을 사용합니다. 그렇다면 왜 매번 점검에 실패합니까?왜이 루핑은 영원합니까?

+0

항상 루프에 있다는 것을 의미합니까 아니면 결코 루프에 없다는 뜻입니까? –

답변

0

문자열이 yn 일 수 없으므로 교체 ||&&과 :

while (confirm != "y" && confirm != "n") 
1
while (confirm != "y" || confirm != "n") 

당신은 루프 당신의 문자열이 중 하나하지 y, 또는 NOT n입니다 동안. n 인 경우 y이 아니며 반대의 경우도 마찬가지입니다. 동시에 두 가지 조건을 모두 만족시킬 수는 없습니다!

당신은 당신의 문자열이 y 또는 n 이외의 경우 만족하실 것입니다

while (confirm != "y" && confirm != "n") 

이 필요합니다.

+0

와우 무슨 어리석은 실수 롤, 감사합니다 Logged – DrOstler

0

그것은 잘못된 논리입니다 : 예를 들어 확인이 "Y"의 경우는 루프에 어쨌든 들어갈 것이다, 그래서이 동일 아니다 "N".

는이 작업을 수행 :

while (!(confirm == "y" || confirm =="n")){ 
... 
} 
0

DrOstler을

당신의 논리는 잘못된 것입니다.

나를 위해 바이너리로 생각하면 ir 도움이됩니다.

0 OR 0은 유일하게 잘못된 값이고 0 OR 1, 1 OR 1, 1 OR 0은 모두 참입니다. 0 OR 0은 사용자 또는 대답이 y 및 n이어야 함을 의미하며 이는 불가능합니다.

필요한 것은 AND 연산자 (& &)를 사용하거나 부정 대신 평등을 사용하는 것입니다.

while (confirm != "y" && confirm != "n") 

이 답변은 y 또는 n이 아닌 한 반복됩니다.

OR

while (confirm == "y" || confirm == "n") 

응답이 Y 또는 N 중 하나 인 경우에만이 루프.

힌트 : Google 모건 법!