0

次のコードには、ユーザーがコードを続行するために入力する必要がある事前設定されたパスワードがあります。ただし、設定されたパスワード(PASS1~PASS3)を入力すると、コードは関係なく do-while に移動します。while にパスワードが正しいことを認識させ、無効なパスワード行に行かないようにするにはどうすればよいですか?

// 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();

 }
}
4

2 に答える 2

0

「||」を変更してみてください に "&&"。

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

于 2016-11-01T13:52:15.910 に答える
0

ロジックが間違っています。つまり、何かを実行してからいくつかの条件をチェックしますが、いくつかの条件をチェックしてから何かを実行します。したがって、次のコード:

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

読むべき:

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

また、論理 OR||を論理 AND に変更したことに注意してください&&。これは、1 つだけでなく、それらすべてと等しくないかどうかを確認したいためです。

余談ですが、変数Passwordは使用されていないため、使用された変数のタイプミスにつながる可能性があるため、削除する必要がありますpassword

于 2016-11-01T13:54:02.380 に答える