вложенный оператор if дает неверные результаты и не запускается - PullRequest
0 голосов
/ 23 октября 2011

Я пытаюсь создать файловую систему журнала с индексом в нем. для каждых 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 ]

3 голосов
/ 23 октября 2011

Я не совсем уверен, чего именно вы пытаетесь достичь, но причина, по которой выполнение никогда не входит в эту ветвь, заключается в том, что число не может быть кратным 100 , пока быть кратным 1000. 100 - это коэффициент 1000.

if(timesrun % 100 != 0 && timesrun % 1000 == 0) // Always false
{
    Debug.WriteLine("rename files index?.xml ");
    string basename = "index";
    ...
1 голос
/ 23 октября 2011

В основном ваши сравнения инвертированы. Это:

if (timesrun % 100 != 0)

будет работать 99 раз из ста, а не один время из ста.

Вы имели в виду:

if (timesrun % 100 == 0)

и аналогично для случая 1000 ... хотя при этом файлы будут перебрасываться через каждые 10 файлов, а не через каждый 1000 файлов, как вы будете делать это после 1000 линии . Вы можете либо сделать это 100000, либо изменить на одну переменную для строк и одну для файлов.

(Обратите внимание, что структура вашего кода также будет намного понятнее, если вы правильно выстроите отступы.)

0 голосов
/ 23 октября 2011

потому что if timesrun % 100 != 0 так всегда timesrun % 1000 будет not 0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...