2016-11-01 7 views
0

다음 코드에는 암호를 계속 입력하기 위해 사용자가 입력해야하는 미리 설정된 암호가 있습니다. 그러나 설정된 패스워드 (PASS1-PASS3)가 입력되면 코드는 무관하게 do-while으로 이동합니다. 잠시 동안 암호가 올바르지 않아 잘못된 암호 줄을 찾지 못하게하려면 어떻게해야합니까?C# 콘솔 응용 프로그램 암호 입력 검사기

// Program asks user to enter password 
// If password is not "home", "lady" or "mouse" 
// the user must re-enter the password 
using System; 
public class DebugFour1 
{ 
public static void Main(String[] args) 
    { 
const String PASS1 = "home"; 
const String PASS2 = "lady"; 
const String PASS3 = "mouse"; 
String password; 
String Password; 
Console.Write("Please enter your password "); 
password = Console.ReadLine(); 
do 
{ 
    Console.WriteLine("Invalid password enter again: "); 
    password = Console.ReadLine(); 
} while (password != PASS1 || password != PASS2 || password != PASS3); 
Console.WriteLine("Valid password"); 
Console.ReadKey(); 

} 
} 
+2

While 루프를 AND AND &로 바꿉니다. 'while (password! = PASS1 && password! = PASS2 && password! = PASS3); '여기서 do-while 루프는 필요 없습니다. while 루프가 작동합니다. –

답변

0

논리가 잘못되어 특정 조건을 확인한 다음 일부 조건을 확인하고 일부 조건을 확인한 다음 무언가를 수행하려고합니다. 그래서 다음 코드를

do 
{ 
    Console.WriteLine("Invalid password enter again: "); 
    password = Console.ReadLine(); 
} while (password != PASS1 || password != PASS2 || password != PASS3); 

읽어야합니다 나는 또한 논리적 AND입니다 &&에 논리적 관찰 보고서를 ||을 변경

while (password != PASS1 && password != PASS2 && password != PASS3) 
{ 
    Console.WriteLine("Invalid password enter again: "); 
    password = Console.ReadLine(); 
} 

알 수 있습니다. 이것은 단지 하나가 아닌 모든 것이 평등하지 않은지 확인하기 때문입니다.

변수에 Password은 사용되지 않으므로 사용한 변수 password에 오타가 발생할 수 있으므로 제거해야합니다.

0

"||" "& &".

한 번에 모두를 같을 수는 없습니다.

관련 문제