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 &&。这是因为您要检查它是否不等于所有这些,而不仅仅是一个。

附带说明,该变量Password未使用,应将其删除,因为它可能会导致您使用的变量出现拼写错误password

于 2016-11-01T13:54:02.380 回答