#c# #loops #if-statement
#c# #циклы #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);
Ответ №1:
Я не совсем уверен, чего вы пытаетесь достичь, но причина, по которой выполнение никогда не входит в эту ветвь, заключается в том, что невозможно, чтобы число не было кратным, 100
но было кратным 1000
. 100
является фактором 1000
.
if(timesrun % 100 != 0 amp;amp; timesrun % 1000 == 0) // Always false
{
Debug.WriteLine("rename files index?.xml ");
string basename = "index";
...
Комментарии:
1. итак, я должен отбросить цикл ниже другого цикла? как мне запустить оба?
Ответ №2:
В основном ваши сравнения инвертируются. Это:
if (timesrun % 100 != 0)
будет выполняться 99 раз из ста, а не один раз из ста.
Вы имели в виду:
if (timesrun % 100 == 0)
и аналогично для случая 1000 … хотя затем это будет переносить файлы каждые 10 файлов, а не каждые 1000 файлов, поскольку вы будете делать это после 1000 строк. Вы могли бы либо сделать это 100000, либо изменить, чтобы иметь одну переменную для строк и одну для файлов.
(Обратите внимание, что структура вашего кода также будет намного понятнее, если вы соответствующим образом выровняете отступ.)
Ответ №3:
потому if timesrun % 100 != 0
что так всегда timesrun % 1000
будет not 0