判断是否吃饱为什么这里有bug呢,有时候会出现还没吃饱就判断为吃不下了

来源:6-7 PHP中循环结构之while循环语句

sunny184692551

2016-04-01 02:36

<?php
$sum = 12;//小宠物当前的饥饿程度
$now=0;
echo "我饿啦:-(";
echo "<br />";
while($sum<100)
{//小宠物的饥饿程度到100,表示小宠物吃饱啦,不用继续喂了,没吃饱继续喂食
    $num = rand(1,20);//随机数,模拟喂食小宠物的小面包
    $sum =($sum + $num)<=100?($sum + $num):($sum); //小宠物吃小面包
    echo "主人喂了我".$num."%的食物";
    echo ($now=($sum + $num)>100?("喂太多了,吃不下了,少点吧<br/>"."我已经吃了".$sum."%"):
         ("我还没吃饱呢!"."我已经吃了".$sum."%"));
    
    echo "<br />";  
 
    
}
echo "终于吃饱啦^_^";
?>

写回答 关注

5回答

  • 拨云见雾0
    2016-04-01 09:37:16
    已采纳

    我知道了,是因为$now=$sum+$num;但前面的三元表达式中,$sum=$sum+$num;所以$now算是=$sum+$num+$num;这可能是原因吧,希望对你有用

    sunny1...

    是这里错了呢,我再想想怎么改

    2016-04-04 10:18:21

    共 1 条回复 >

  • lingyunkeyan
    2017-07-04 16:09:29

    楼主的代码感觉很绕,简单的弄复杂了;而且感觉用到的三元运算在这里不行,rand(1,20)因为是随机的所以总会影响你三元运算的判断,用if和break吧最简单,或者楼上的if...else if...else的写法都是正确的

  • O_硕
    2016-07-11 12:21:20
    <?php
    $sum = 12;//小宠物当前的饥饿程度
    $now=0;
    echo "我饿啦:-(";
    echo "<br />";
    while($sum<100)
    {//小宠物的饥饿程度到100,表示小宠物吃饱啦,不用继续喂了,没吃饱继续喂食
        $num = rand(1,20);//随机数,模拟喂食小宠物的小面包
    
        $sum =$sum + $num; //小宠物吃小面包
    	if($sum<100){
       echo "主人喂了我".$num."%的食物";
        echo ("我还没吃饱呢!"."我已经吃了".$sum."%");
        echo "<br />";  
     
        }else if($sum==100){
    		echo "主人喂了我".$num."%的食物吃了".$sum."%";
    	}else{
             $sum=$sum-$num;
    		 echo "主人喂了我".$num."%的食物";
        echo ("喂太多了,吃不下了,少点吧<br/>"."我已经吃了".$sum."%");
        echo "<br />";  
    	}
    }
    echo "终于吃饱啦^_^";
    ?>

    里面加个循环

  • 1ong_way
    2016-04-23 17:35:22
    $sum =($sum + $num)<=100?($sum + $num):($sum); //小宠物吃小面包

     echo ($now=($sum + $num)>100?("喂太多了,吃不下了,少点吧<br/>"."我已经吃了".$sum."%"):
             ("我还没吃饱呢!"."我已经吃了".$sum."%"));

    这两句调换一下位置我觉得就可以解决了。

  • 拨云见雾0
    2016-04-01 09:29:50

    我刚看了下,当你喂了10%,但$sum=24;

PHP入门篇

PHP入门教程轻松学习,行业大牛帮您快速掌握PHP编程基础知识。

456325 学习 · 6558 问题

查看课程

相似问题