-7

メニューの方法はあるけど、終わらない…

static public int Menu(string M_1, string M_2, string M_3, string M_4) {
    int menu = 0;
    Write("1. " + M_1, 10, false);
    Write("2. " + M_2, 11, false);

    if (M_3 != "") {
        Write("3. " + M_3, 12, false);
    }

    if (M_4 != "") {
        Write("4. " + M_4, 13, false);
    }

    Console.Write("\n\nWrite a numbere of an Action and press ENTER:  ");

    while (true) {
        menu = Console.Read();

        if (menu != 1 || menu != 2 || menu != 3 || menu != 4) {
            continue;
        } else {
            break;
        }

    }
    return menu;
}

主な方法: ...

int menu1 = Menu("First", "Secong", "Third", "");

switch (menu1) {
    case 1:
        Console.Clear();
        Vypsat("You choose action 1.", 35);
        Console.ReadKey();
        break;

...

プログラムを実行して数字を押して Enter を押すと、すべて同じままです。:(何が問題なの?

4

3 に答える 3

5

このConsole.Readメソッドは最初の文字の文字コードを返します。入力した内容を数値に解析しません。

入力し1てエンターを押すと、は数字ではなくConsole.Read文字コードを返します。491

また、この条件:

if (menu != 1 || menu != 2 || menu != 3 || menu != 4) {

常に真になります。値は一度に 1 つの数値にしか等しくならないため、同時に 4 つの数値すべてに等しくなり、条件を偽にする値はありません。

于 2013-05-22T18:06:22.373 に答える
1

この行:

if (menu != 1 || menu != 2 || menu != 3 || menu != 4)

常に true を返します。おそらくあなたは次のことを意味しました:

if (menu != 1 && ...)
于 2013-05-22T18:02:17.317 に答える
0

if (menu != 1 || menu != 2 || menu != 3 || menu != 4) menu は一度に 1 つの値しか持てないため、常に true になります。|| を置き換えたいと思います。と &&。

于 2013-05-22T18:03:54.290 に答える