-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将返回字符代码49,而不是数字1

此外,这种情况:

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

永远都是真的。一个值一次只能等于一个数字,因此没有一个值可以同时等于所有四个数字并使条件为假。

于 2013-05-22T18:06:22.373 回答
1

这一行:

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

总是返回真。也许你的意思是:

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

if (menu != 1 || menu != 2 || menu != 3 || menu != 4) 将永远为真,因为 menu 一次只能有一个值。相信你要换|| 和 &&。

于 2013-05-22T18:03:54.290 回答