请老师检查作业

来源:1-17 编程练习

Vcooli

2019-08-14 18:06:44

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>计算器</title>
</head>
<body>
<form action="#" method="post">
   数字1:<input type="text" name="num1" id="" placeholder="请输入数字"/>
   <select name="xuanz" id="">
       <option value="+">+</option>
       <option value="-">-</option>
       <option value="*">*</option>
       <option value="/">/</option>
       <option value="%">%</option>
   </select>
   数字2:<input type="text" name="num2" id="" placeholder="请输入数字"/>
<input type="submit" value="提交" name="act"/>
</form>
<?php
error_reporting(0);
//post接受数据
//判断用户是否点了提交按钮
$act=$_POST['act'];
if($act) {
   $num1 = $_POST['num1'];
   $num2 = $_POST['num2'];
   $xuanz=$_POST['xuanz'];
   //判断用户输入数据是否为int数值
   if (is_numeric($num1) && is_numeric($num2)) {
       switch ($xuanz) {
           case '+':
               $res = $num1 + $num2;
               break;
           case '-':
               $res = $num1 - $num2;
               break;
           case '*':
               $res = $num1 * $num2;
               break;
           case '/':
               switch($num2!=0) {//判断被除数是否为0
                   case 1:
                        $res = $num1 / $num2;
                   break;
                   case 0:
                       exit('被除数不能为0,请重新输入');
               }
               break;
           case '%':
               switch ($num2!=0){
                   case 1:
                       $res = $num1 % $num2;
                       break;
                   case 0;
                       exit('被取余的数不能为0,请重新输入');
               }
               break;
           default:
               echo '非法数值';
               break;
       }
   } else {
       exit ('非法数值,请重新输入');
   }
   echo "<h1>计算的结果为:<br/>{$num1}{$xuanz}{$num2}={$res}</h1>";
}
?>
</body>
</html>

写回答

1回答

好帮手慕小尤

2019-08-14

同学你好,已完成练习,棒棒哒,不过有一个小建议,在平时测试代码时是不会抑制错误的。在关闭抑制符后报错,如图所示(注意:未定义的变量):

http://img.mukewang.com/climg/5d53df840001ffe106100091.jpg

错误原因:由于程序第一次运行,并未接收到post值则开始定义变量造成的。

解决方法:使用isset()或者empty()检测是否有post数据。代码如下:

<?php
// error_reporting(0);
//post接受数据
//判断用户是否点了提交按钮
// $act=$_POST['act'];
if(isset($_POST['act'])) {
    $num1 = $_POST['num1'];
    $num2 = $_POST['num2'];
    $xuanz=$_POST['xuanz'];
    //判断用户输入数据是否为int数值
    if (is_numeric($num1) && is_numeric($num2)) {
        switch ($xuanz) {
            case '+':
                $res = $num1 + $num2;
                break;
            case '-':
                $res = $num1 - $num2;
                break;
            case '*':
                $res = $num1 * $num2;
                break;
            case '/':
                switch($num2!=0) {//判断被除数是否为0
                    case 1:
                         $res = $num1 / $num2;
                    break;
                    case 0:
                        exit('被除数不能为0,请重新输入');
                }
                break;
            case '%':
                switch ($num2!=0){
                    case 1:
                        $res = $num1 % $num2;
                        break;
                    case 0;
                        exit('被取余的数不能为0,请重新输入');
                }
                break;
            default:
                echo '非法数值';
                break;
        }
    } else {
        exit ('非法数值,请重新输入');
    }
    echo "<h1>计算的结果为:<br/>{$num1}{$xuanz}{$num2}={$res}</h1>";
}
?>

祝学习愉快!

1
hcooli
h 老师你好!isset()跟empty()是使用判断变量是否被定义和是否有值返回bool类型。但是重新走到$act=$_POST['act']这个位置总会报错。除了你在课上说的error_reporting(E_ALL & ~E_NOTICE);还有其他方法吗
h019-08-14
共1条回复

0 学习 · 4928 问题

查看课程