0

我创建了这个函数,当尝试在 Y 文本框中输入 0 时,它可以正确显示无穷大符号。但是我仍然得到零错误的除法......这是我的代码。

这是 switch 语句的情况

case '/':             
    $prod = $x / $y;     
    break;

呵呵

//check for divide by 0
function check0($y)
{
    if ($y == 0)
        throw new Exception ($prod = "&#8734");

    return FALSE;
 }

 try
 {
    check0($y);
    $prod = $x /$y;   
 }catch(Exception $zero){
     echo $zero->getMessage();
 }
4

5 回答 5

2

首先:您正在第二行代码处进行除法(可以除以零)。

第二:由于您抛出错误,因此无需在您的方法中返回 false。

第三:为什么在这里使用异常而不是让您的方法返回 true 或 false 并在执行 devision 之前检查它。

第四:如果你只需要检查 $y 的值,为什么还要有一个方法。调用该方法或包含一个 if 语句只需要一行代码。

那么,为什么不能这样:

case '/':                  
    if($y > 0)
        $prod = $x / $y;
    break; 
于 2011-10-26T14:33:58.670 回答
0

这是因为您实际上在顶部附近(在 中case)进行了除法。

于 2011-10-26T14:30:08.777 回答
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 = "&#8734";
        else
            $product = NULL;
    }
    print "Product is $product\n";

?>
于 2011-10-26T14:36:06.610 回答
0

就我而言,一切正常。请确保,您并没有尝试在脚本的早期使用除法,因为它看起来像。

case '/':
$prod = $x / $y;
break;

在您的函数调用之前开始。

于 2011-10-26T14:36:22.710 回答
0

您必须在除法之前调用 check0() 。如果 y == 0,您应该返回 FALSE,否则返回 TRUE。如果返回 TRUE 则进行除法。但是,不需要调用方法来执行此操作!

于 2011-10-26T14:37:07.497 回答