我创建了这个函数,在尝试在Y文本框中输入0时正确显示无穷大符号。但是我仍然得到除零错误...这是我的代码。
这是切换参数的情况
case '/':
$prod = $x / $y;
break;
HH
//check for divide by 0
function check0($y)
{
if ($y == 0)
throw new Exception ($prod = "∞");
return FALSE;
}
try
{
check0($y);
$prod = $x /$y;
}catch(Exception $zero){
echo $zero->getMessage();
}
答案 0 :(得分:2)
首先:您正在第二行代码处进行除法(可以将其划分为零)。
第二次:由于您输入错误,因此无需在方法中返回false。
第三:为什么在这里使用异常而不只是让你的方法返回true为false并在执行devision之前检查它。
第四:如果您只需要检查$ y的值,为什么要使用方法。调用方法或包含if语句只需要一行代码。
那么,为什么它不能就像:
case '/':
if($y > 0)
$prod = $x / $y;
break;
答案 1 :(得分:0)
这是因为你实际上在顶部附近进行了划分(在case
中)。
答案 2 :(得分:0)
你的逻辑感觉......嗯好纠结....这里看看这个:
<?php
function divide($x, $y) {
if ( $y === 0 )
throw new Exception("Divide By Zero");
return $x/$y;
}
try {
$product = divide(3, 0);
}
catch(Exception $e) {
if ( $e->getMessage() == "Divide By Zero" )
$product = "∞";
else
$product = NULL;
}
print "Product is $product\n";
?>
答案 3 :(得分:0)
在我的情况下一切正常。可以肯定的是,你不是在你的脚本中更早地使用除法,因为它看起来像。
case '/':
$prod = $x / $y;
break;
在函数调用之前启动。
答案 4 :(得分:0)
你必须在分裂前调用check0()。如果y == 0,则应返回FALSE,否则返回TRUE。 如果返回TRUE则进行除法。但是,没有必要调用方法来执行此操作!