2016-11-01 8 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 &&に置き換えます。 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); 

は、次のようになります。私も論理積をとり&&への論理ORを||を変更

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

お知らせ。これは、あなたが1つではなくすべてのものと等しくないかどうかをチェックしたいからです。

変数Passwordは使用されていないので、使用した変数passwordにタイプミスを引き起こす可能性があるため、削除する必要があります。

0

"||" 「& &」となります。

一度にすべてを等しくすることはできません。