0

私は、C# で単純なパスワード ストレージ コンソール アプリケーションに取り組んでいます。

ユーザーがその時点からすべてのパスワード エントリをマスクするかどうかを尋ねるセクションで、少し問題があります。

これはコードのセクションです:

bool tryagain = true;
while(tryagain == true)
{
  Console.WriteLine("Would you like to mask all other password  entiries?(Y,N)");
  string input = Console.ReadLine();
  if (input == "y" | input == "Y")
  //Something wrong, always passes to Your awnser was invalid
  {
      maskpass = true;
      tryagain = false;
  }

  if (input == "n" | input == "N")
  {
      maskpass = false;
      tryagain = false;
  }
  else
  {
      Console.WriteLine("Your awnser was invalid, would you like to try again?");
      string yesno = Console.ReadLine();
      if (yesno == "y" | yesno == "Y")
      {
          tryagain = true;
      }

      if (yesno == "n" | yesno == "N")
      {
          Environment.Exit(0);
      }
  }
}

問題は、コードを実行すると、常に else ステートメントが実行されることです。

間違いは非常に単純であり、私は無知であると確信していますが、ここで何が起こっているのか誰か知っていますか?

4

2 に答える 2

7

||single の代わりに使用し|ます。||平均または条件付きですが、単一|バイナリまたはです。

あなたのコードのロジックは次のように言っていると思います:

if input=='y' OR input=="Y"、何かをします。

まだ別の提案。私の仮定が正しければ、単純なString.Equalsオーバーロードでそれを達成できます。

if(input.Equals("y", StringComparison.InvariantCultureIgnoreCase)
{
   //do something/
}
于 2012-07-15T16:02:25.587 に答える
0

||を使用できます または、StringクラスString.equalsのメソッドを使用できます。これは文字列であるため、入力として読み取る場合は、String.equalsメソッドを使用することをお勧めします。

于 2012-07-15T16:16:23.063 に答える