[英]Find Error in this code.this program is written in PHP
<?php
echo "Enter Month:";
$m=trim(fgets(STDIN));
echo "Enter Day:";
$d=trim(fgets(STDIN));
//{Write your code here
if($m>=3 && $m<=6)
{
if($d>=20){
echo"Spring";
}
}
else
{
echo"Not Spring";
}
//}
exit;
?>
在此代碼中查找錯誤 3 月 20 日(含)和 6 月 20 日(含)之間的持續時間為春季。 編寫一個程序,將月和日作為正整數輸入並顯示其是否為春季時間。
這看起來很像課堂作業或其他東西,你從要求(甚至不是很好地要求)別人做這件事中獲得的收益很少......
話雖如此,我很無聊,所以我會指導你一點:
if($m>=3 && $m<=6)
{
if($d>=20){
echo"Spring";
}
}
這個邏輯是有缺陷的。 這將僅在 3 到 6 個月的 20 到 31 天返回“Spring”,這意味着像 4 月 1 日 (01/04) 這樣的日期不會返回 Spring。
您的 if 語句應該類似於“現在是第 3 個月和第 20 天或之后,或者是第 4 個月,或者是第 5 個月,或者是第 6 個月和第 20 天或之后”:
if(($m == 3 && $d >= 20) || ($m == 4) || ($m == 5) || ($m == 6 && $d <= 20))
額外的:
根據您上面的代碼判斷,以下內容可能太高級了,但我想指定它,因為將日期作為字符串處理總體上是一個壞主意,並且在大多數情況下會導致災難。 如果你沒有得到它,暫時把它放在一邊。
處理它的最好方法是使用 PHP DateTime
對象威脅那些作為真實日期而不是整數:
$beginingSpring = Datetime::createFromFormat('m-d', '03-20'); // March 20th.
$endSpring = Datetime::createFromFormat('m-d', '06-20'); // June 20th.
$date = Datetime::createFromFormat('m-d', $m.'-'.d); // Entered date
if($date >= $beginingSpring && $date <= $endSpring){
echo 'Spring';
}else{
echo 'Not spring';
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.