对于一个循环疑惑
控制台应用程序。问题:编写一个应用程序,让用户输入两个数字,并显示他们,但拒绝接受两个数字都大于10的情况,并要求用户重新输入。
答案如下:
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication17
{
class Program
{
static void Main(string[] args)
{
bool numberok = false;
double var1, var2;
while (!numberok)
{
Console.WriteLine("请输入一个数字");
var1 = Convert.ToDo2uble(Console.ReadLine());
Console.WriteLine("请再输入一个数字");
var2 = Convert.ToDouble(Console.ReadLine());
if ((var1 > 10) && (var2 > 10))
{
Console.WriteLine("两个数字中只能出现一个大于10的数字,请重新输入。");
}
else
{
numberok = true;
}
}
}
}
}
疑惑:红字部分。循环的条件是while(!numberok),因为将numberok定义为false,所以我认为!numberok就是ture,也就是说当语句true的时候,就进行循环,而为false的时候就停止循环。可是事实恰恰和我想的相反,从最后一段代码“numberok = true;”当语句true的时候就停止循环,在非true的情况下也就是“if ((var1 > 10) && (var2 > 10))”的情况下就正常进行循环了,百思不得其解,求高人~~~
[[it] 本帖最后由 一介草民 于 2008-10-18 16:51 编辑 [/it]]