所以,这是我试图解决的问题(https://www.hackerrank.com/challenges/library-fine)。为了解决这个问题,我创建了一个简单的函数calculateFine
并设置条件来计算罚款。那有什么问题呢?好吧,当我在我的机器上运行代码时,一切似乎都很好,但hackerrank不接受代码。我是PHP新手,功能概念对我来说有点混乱,但我试过了。以下是我的代码:
<?php
$_fp = fopen("php://stdin", "r");
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
$_a = explode(" ",fgets($_fp));
$_b = explode(" ",fgets($_fp));
// Initialising variable
$_fine = "";
// Calling Function
calculateFine($_a,$_b);
// Defining Function
function calculateFine($actualDate, $returnDate)
{
// Checking various conditions
if ($actualDate[0] <= $returnDate[0] && $actualDate[1] == $returnDate[1] && $actualDate[2] == $returnDate[2])
{
$_fine = 0;
echo $_fine;
}
elseif($actualDate[0] > $returnDate[0] && $actualDate[1] == $returnDate[1] && $actualDate[2] == $returnDate[2])
{
$_late = $actualDate[0] - $returnDate[0];
$_fine = 15*$_late;
echo $_fine;
}
elseif($actualDate[1] > $returnDate[1] && $actualDate[2] == $returnDate[2])
{
$_late = $actualDate[1] - $returnDate[1];
$_fine = 500*$_late;
echo $_fine;
}
elseif($actualDate[2] > $returnDate[2])
{
$_fine = 10000;
echo $_fine;
}
else
{
$_fine = 0;
echo $fine; // Updated (This is the undefined variable causing error )
}
}
?>
答案 0 :(得分:1)
$actualDate[2]
似乎有一个换行符。因此,如果你修剪它,你会得到正确的答案:
trim($actualDate[2])
但在这里修剪它会更好:
$_a = explode(" ",trim(fgets($_fp)));
$_b = explode(" ",trim(fgets($_fp)));
答案 1 :(得分:0)
我明白了,抱歉粗心。最后一个回音是$fine
而不是$_fine
。这就是为什么条件与某些测试用例不匹配的原因。三江源。