我正在执行一种计算暂停的方法,该方法具有某些中断检查功能。我要同时检查时间(从-到)的方法,如果时间少于30,请让我报告错误。
如果不重复循环,它将成功开始。
如果条件正确,我可以以某种方式跳过该部分吗?
在变量暂停中,我得出了自己的值:6、56、4
这是方法
private double CalculateBreak(List<PRAESENZZEIT> arrivals, out string error)
{
error = null;
double totalBreak = 0;
for (int i = 1; i < arrivals.Count();)
{
for (int n=i-1; n < arrivals.Count();)
{
double pause = (arrivals[i].ZPZ_Von - arrivals[n].ZPZ_Bis).TotalMinutes;
//this part
if (pause > 30)
error = "OK";
else
error = "Pausenzeitverletzung";
//end
i += 1;
totalBreak += pause;
break;
}
if (totalBreak < 60)
{
error = "Pausenzeitverletzung";
}
}
return totalBreak;
}
答案 0 :(得分:2)
编辑:在注释中来回往复后,还需要进行进一步的更改。如果这仍然不能满足您的要求,那么请租用另一个问题,仅关注这一部分,因为我不知道您在说什么。原始答案中的代码已注释掉。现在,如果有一个错误,则会返回错误
您的循环是错误的。您只需要其中之一。 for n循环遍历所有到达对象,看起来您只需要查看前一个即可。尝试这样的事情:
private double CalculateBreak(List<PRAESENZZEIT> arrivals, out string error)
{
error = null;
double totalBreak = 0;
for (int i = 1; i < arrivals.Count();)
{
// Check the i-th against the previous one (i - 1)
double pause = (arrivals[i].ZPZ_Von - arrivals[i - 1].ZPZ_Bis).TotalMinutes;
// //this part
// if (pause > 30)
// error = "OK";
// else
if (pause < 30) // new
{ // new
error = "Pausenzeitverletzung";
} // new
//end
i += 1;
totalBreak += pause;
// break;
// if (totalBreak < 60)
// {
// error = "Pausenzeitverletzung";
// }
}
// new: moved if block
if (totalBreak < 60)
{
error = "Pausenzeitverletzung";
}
return totalBreak;
}