我通常做Java编程,但想用C#测试我的运气,看看它是什么样的。我不是一个新手程序员,所以也许这很愚蠢,但在我的Do-While循环中,为什么它只有在我使用&&而不是||当试图终止我的循环?对我来说,在Java中,||将被使用,因为你想要一个大写或小写“q”来终止。我正在读取终止为“Q”和“q”。显然情况并非如此,因为循环终止就好了。我只是不明白这是如何工作的。
namespace Testing_Grounds
{
class Program
{
static void Main(string[] args)
{
string entry;
do
{
Console.WriteLine("This is an inventory screen");
Console.WriteLine("1. Health Potions");
Console.WriteLine("2. Mana Potions");
Console.WriteLine("3. Revive Potions");
Console.Write("Please enter the number of the item " +
"you would like to inspect, or enter \"Q\" to quit: ");
entry = Console.ReadLine();
if (entry.Equals("1"))
{
Console.WriteLine("Health Potions");
}
else if (entry.Equals("2"))
{
Console.WriteLine("Mana Potions");
}
} while (entry != "Q" && entry != "q");
}
}
}
答案 0 :(得分:5)
||
和&&
在C#和Java中的工作方式相同。
entry != "Q" && entry != "q"
(AND)会在角色与Q
和q
不同时继续循环。
entry != "Q" || entry != "q"
(OR)对于任何字符均为true,因为字符始终与Q
或q
不同,因此循环永远不会终止。
答案 1 :(得分:2)
conditional operator
在Java或C#(或任何编程语言)中没有区别,因为这些是基本的编程概念。你是错误地理解它。
你要做的是
while (entry != "Q" && entry != "q");
因此,您的entry
变量在实例的任何点(实例平均时间)只能包含一个值。因此,它可以随时Q
或q
而不是both
。相反,你应该像
while (entry != "Q" || entry != "q");
此外,您的entry
变量只存储一个char值;为什么要将其声明为string
。而是声明为char
而不是内存效率。
答案 2 :(得分:1)
do
/ while
循环条件指定何时应该再次执行循环,而不是何时应该退出循环。这就是你需要&&
。
我很确定它在Java中的工作方式完全相同。
答案 3 :(得分:1)
标准是继续,而不是终止。如果你使用||
,你会说“如果输入不是Q或者不是q则继续循环”,这总是正确的(输入不能同时为两个),所以你永远不会退出。 &&
是两种语言中的正确逻辑。
答案 4 :(得分:1)
do ... while
循环工作正常。正如其他人所说,当条件陈述变为假时,它将终止。您在此处遇到的||
和&&
的混淆可能是由于编写相同条件的不同方式造成的:
entry != "Q" && entry != "q"
与
相同 !(entry == "Q" || entry == "q")
。
否定一个连词就是否定的分离。