新手请教while循环的变量作用域问题
我要写个程序,需要实现的功能是:逐行读取文本内容,判断每行的内容。如果所有行都符合要求,那么执行动作A。只要有1行内容不符合要求,那么执行动作B。
我写的程序结构如下
while (文本不为空)
{
string AAA = 'Initial'; //声明一个变量
if (本行符合要求)
{
读取下一行;
line++;
}
else
{
AAA = 'NO';
break;
}
//前面这段是为了得到string AAA的值,
//下面根据AAA的值来判断是执行动作A还是动作B(又来一个循环,把文本每一行插入数据库)
while (AAA= 'NO') //这里的AAA有问题了,一直都是初始值'Initial',不会得到'NO'这个值
{
..
}
}
需要怎么样才能使第二个循环里面,AAA的值会变为'NO',而不是一直都是声明这个变量时的初始值'Initial'呢?
------解决方案--------------------定义在外面。
{}块中的变量是无法在外面得到的。
------解决方案--------------------当AAA=="B"的时候,就Break,退出了第一个While循环,第二个While就不会被执行
只有当AAA == 'Initial'时,才会执行第二个While,所以你在第二个While出得到的AAA总是为初始值
------解决方案--------------------你的break直接break出while循环了.... 下面红字的while循环是不会执行的
逻辑问题...理清思路,看看break在那里合不合适 还有第二个while到底该写在哪(如果用break的话)
------解决方案--------------------那就把 AAA 和第二个 while 都放外面
C# code
string AAA = "Initial"; //声明一个变量
while (文本不为空)
{
if (本行符合要求)
{
//读取下一行;
line++;
}
else
{
AAA = "NO";
break;
}
//前面这段是为了得到string AAA的值,
}
//下面根据AAA的值来判断是执行动作A还是动作B(又来一个循环,把文本每一行插入数据库)
while (AAA == "NO") //这里的AAA有问题了,一直都是初始值'Initial',不会得到'NO'这个值
{
//..
}