读书人

新手请问while循环的变量作用域有关问

发布时间: 2012-06-24 18:32:37 作者: rapoo

新手请教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'这个值{    //..} 

读书人网 >C#

热点推荐