为while循环中的if条件退出while循环
本文关键字:while 循环 条件 退出 if | 更新日期: 2023-09-27 18:15:51
我试图退出Dowhile循环,当循环内满足if条件时。使用Dowhile循环的原因是tagIDNumber有时会接受垃圾值。下面是我的意图代码
- 第一次启动应用程序并调用TagID()函数时,previstagidnumber将为空字符串,tagIDNumber可以为"NO TAG",实际值或"重新启动"应用程序。
- 当tagIDNumber第一次获得实际值时,它将存储在previoustagIDNumber中。
- dowhile循环用于执行函数Identify(),直到tagIDNumber == previoustagIDNumber。
但是tagIDNumber也可以是空字符串,在这种情况下do while循环必须退出。下面的代码似乎不能在满足if条件时退出dowhile循环。
public string TagID()
{
SetAttenuation(Attenuation);
StringBuilder tagIDNumber = new StringBuilder(); // TagID
int TagType;
TagType = Identify(tagIDNumber, SEGOTAGTYPE);
// When the application is launched first time, previous Tag ID value is empty
if (Globals.previoustagIDNumber != "")
{
if (tagIDNumber.ToString().ToUpper() != Globals.previoustagIDNumber)
{
do
{
tagIDNumber.Clear();
TagType = Identify(tagIDNumber, SEGOTAGTYPE);
if (tagIDNumber.ToString() == "")
{
return "NO TAG";
break;
}
}
while (tagIDNumber.ToString().ToUpper() != Globals.previoustagIDNumber);
}
return tagIDNumber.ToString().ToUpper();
}
else
{
if (TagType == SEGOTAGTYPE)
{
if (tagIDNumber.ToString() == "")
{
return "NO TAG";
}
else
{
return tagIDNumber.ToString().ToUpper();
}
}
else
{
return "RESTART";
}
}
}
您可以使用一个变量来指示do…循环退出:
bool getOut=false;
do
{
tagIDNumber.Clear();
TagType = Identify(tagIDNumber, SEGOTAGTYPE);
if (tagIDNumber.ToString() == "")
getOut=true;
}
while (tagIDNumber.ToString().ToUpper() != Globals.previoustagIDNumber & getOut==false);