4

私はC#にまったく慣れておらず、非常に単純なループを作成しようとしています

        while ((var_app_choice != "Exit") || (var_app_choice != "Test"))
        {
            //stuff
        }

エンドユーザーが値を入力するコンソールアプリケーションがあります

この値がExitORTestと等しくない(!=)場合は、ループする必要があります。

私はここで何が間違っているのですか?

ありがとう

4

3 に答える 3

4

ループから抜け出したい場合は、ユーザーが入ったとき、ExitまたはオペレーターTestが必要ではありません&&||

while ((var_app_choice != "Exit") && (var_app_choice != "Test"))
    {
        var_app_choice = Console.ReadLine();
        //stuff
    }
于 2012-10-04T05:00:36.977 に答える
2

私はあなたが欲しいと思うし、そうではないか...

の値var_app_choiceが「Test」の場合、最初の条件が真であり、ループが実行されます。同様に、「終了」の場合、2番目の条件は真です。言い換えれば、あなたは無限ループを持っています...

于 2012-10-04T05:01:45.677 に答える
0

友人、

私はデータリストを持っていると考えてください

List dataList = new List() { "Apple", "Microsoft", "exit", "Oracle", "Android" };

int i = 0; while (dataList[i] != "exit" || dataList[i] != "test") { Console.WriteLine(dataList[i]); i++; }

出力は Apple と Microsoft のみであると予想されます。インデックス 2 で「exit」に遭遇すると停止するはずです。

実際に何が起こるか (「終了」を検証していると考えてください) は、最初の条件が失敗したことです。これは、NotEqualTo 演算子が正常に動作することを意味します。問題は OR 演算子です。「exit」は「test」と等しくないため、条件はパスし、さらにループに入ります。

データは「exit」および「test」と同じであってはなりません。

あなたが問題を抱えていると思います。参考までに、While(condn){} ここでは、ブール値 (true または false) を出力する任意の条件について言及できます。

ありがとうございます。間違っていたら訂正してください。

于 2012-10-04T05:30:05.950 に答える