嵌套if else语句给出不正确的结果而不运行

时间:2011-10-23 06:39:43

标签: c# loops if-statement

我正在尝试创建一个带有索引的日志文件系统。 对于日志文件中的每100行,日志文件应重新创建为log1.log,对于创建的每1000个文件,index1.log重新创建为index2.log

if (timesrun % 100 != 0)
{
    Debug.Write(" enter code here. ");
    if (timesrun % 1000 != 0)
    {
        Debug.Write("'");
        Debug.Write(" enter code here. ");
     }
    else
    {
        Debug.WriteLine("rename files index?.xml ");
        string basename = "index";
        string extention = ".log";
        crntstmap++;
        nowsitemap = basename + crntstmap + extention;
        Debug.WriteLine(nowsitemap);
                        }
    //call method create actual file using the filename + timesrun IE
}
else
{
    Debug.WriteLine("rename files log?.php ");
    string basename = "log";
    string extention = ".log";
    crntindx++;
    nowindex = basename + crntindx + extention;
    Debug.WriteLine(nowindex);
}

我得到了奇怪的结果,if循环的第二部分永远不会运行,我从未见过Debug.WriteLine(nowsitemap);

3 个答案:

答案 0 :(得分:3)

我不确定你要完成什么,但执行从未进入该分支的原因是因为数字不可能不是100 的倍数< / em>是1000的倍数。 1001000的一个因素。

if(timesrun % 100 != 0 && timesrun % 1000 == 0) // Always false
{
    Debug.WriteLine("rename files index?.xml ");
    string basename = "index";
    ...

答案 1 :(得分:1)

基本上你的比较是倒置的。这样:

if (timesrun % 100 != 0)

将在100个中运行99次,而不是一个时间中的100次。

你的意思是:

if (timesrun % 100 == 0)

同样适用于1000个案例......虽然那将会覆盖每个 10 文件的文件,而不是每个 1000 文件,因为你将会这样做在1000 行之后。您可以将此值设为100000,也可以更改为行的一个变量和文件的一个变量。

(请注意,如果你恰当地排列缩进,你的代码结构也会更加清晰。)

答案 2 :(得分:0)

因为if timesrun % 100 != 0所以始终timesrun % 1000将是not 0