我的菜单有一个方法,但它没有结束......
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键,则一切都保持不变。 :(那是什么问题?
答案 0 :(得分:5)
Console.Read
方法返回第一个字符的字符代码,它不会解析您输入的数字。
如果您输入1
并按Enter键,Console.Read
将返回字符代码49
,而不是数字1
。
另外,这个条件:
if (menu != 1 || menu != 2 || menu != 3 || menu != 4) {
永远是真的。一个值一次只能等于一个数字,因此没有值可以同时等于所有四个数字并使条件为假。
答案 1 :(得分:1)
这一行:
if (menu != 1 || menu != 2 || menu != 3 || menu != 4)
始终返回true。也许你的意思是:
if (menu != 1 && ...)
答案 2 :(得分:0)
if (menu != 1 || menu != 2 || menu != 3 || menu != 4)
将永远是真的,因为菜单一次只能有一个值。我相信你想要替换||与&&。