C# 当循环未正确检查所有条件时?
因此,赋值如下:您可以输入各种数字,但当您连续输入两次0时,它需要停止。第一次输入数字时,不允许输入0 这是我设置的代码:C# 当循环未正确检查所有条件时?,c#,while-loop,C#,While Loop,因此,赋值如下:您可以输入各种数字,但当您连续输入两次0时,它需要停止。第一次输入数字时,不允许输入0 这是我设置的代码: class MainClass { public static void Main (string[] args) { int givenNumber, prevNumber; Console.WriteLine ("Enter a number: "); int.TryParse (Console.ReadL
class MainClass
{
public static void Main (string[] args)
{
int givenNumber, prevNumber;
Console.WriteLine ("Enter a number: ");
int.TryParse (Console.ReadLine (), out givenNumber);
// I've set the prevNumber to givenNumber because the variable has to be initialized
// before I can use it in the condition below. I thought setting it to the giveNumber
// wouldn't harm. Note that the first time your not allowed to enter 0
prevNumber = givenNumber;
while (givenNumber != 0 && prevNumber != 0) {
prevNumber = givenNumber; //Here is where they both are 0 at a given moment, but only after the condition.
Console.WriteLine ("Enter a number: ");
int.TryParse (Console.ReadLine (), out givenNumber);
}
Console.WriteLine ("Tada");
}
}
问题是,当您只输入了一个0时,它已经停止。例如,如果我首先输入一个7,那么我的下一个数字将是0。当我调试它时,它说我的givenNumber是0,prevNumber是7,当它返回while条件时,它停止并完成。当程序完成调试时,会清楚地显示prevNumber=7和givenNumber=0。我使用的是条件句和正确句,不是吗
有线索吗?我不允许在这件事上使用数组
提前感谢(givenNumber!=0和&prevNumber!=0)
对于从控制台读取的第一个值-编号7
givenNumer将是7岁
prevNumber也将是7(因为分配prevNumber=givenNumber;)
因此,(7!=0&&7!=0)将通过
从控制台第二次读取-编号0
因此,(0!=0&&7!=0)将不会通过,因为0!=0为FALSE,而如果条件为result为FALSE,则循环结束Ooh,没错,您的逻辑是错误的。应该是这样的:
while ((givenNumber != 0) || (prevNumber != 0)) {
查找原因…您的问题在于您的条件语句 现在您正在检查givenNumber和PrevNumber是否都不等于0 因此,如果它们都不等于0,那么该语句的计算结果将为TRUE。但是,如果其中一个数字为0,则该语句的计算结果将为FALSE,因为(TRUE)&&(FALSE)的计算结果将为FALSE
有两种方法可以解决这个问题:您可以在两个“!=”语句中使用| |(或”运算符),也可以对整个语句进行求反,并使用正则等式而不是“!=”本身:!(givenNumber==0&&prevNumber==0)像这样尝试:
而((givenNumber!=0)&&&prevNumber!=0)){
@RBarryYoung尝试了但没有成功