【问题标题】:Fizz Buzz script using while loop stuck in infinite loop - php [closed]使用while循环的Fizz Buzz脚本陷入无限循环 - php [关闭]
【发布时间】:2013-06-20 20:57:10
【问题描述】:

我正在尝试编写一个 Fizz Buzz 脚本,使用 while 循环在数字 1-100echo 之间循环到屏幕。

我正在使用模运算符来查找一个数字是否是以下的倍数:

  • 3 在这种情况下,它与 Fizz 相呼应,
  • 5 在这种情况下,它与 Buzz 相呼应,
  • 或者如果它是 3 和 5 的倍数,则它与 FizzBu​​zz 相呼应

我已经编写了下面的代码,测试了它的所有部分,它似乎可以工作,但是当我运行脚本时,它陷入了一个无限循环,回显Fizz

$i = 1;

while ($i <= 100) {

    if ((3 % $i) === 0) {
        echo 'Fizz';
        $i = $i++;
    } else if ((5 % $i) === 0) {    
        $i = $i++;
        echo 'Buzz';        
    } else if ( ((3 % $i) === 0) && ((5 % $i) === 0)){
        echo 'FizzBuzz';
    } else {
        echo $i++;
    }

}

知道我错了吗?

【问题讨论】:

  • $i % 3。而且你不需要第三个和第四个条件
  • 应该标记homework吗?
  • “我的代码不起作用,错误在哪里”风格的问题被视为离题。你试过什么?你具体卡在哪里了?你不明白什么。如果您能提炼出这一点,它将使您的体验和整个社区的体验都变得更好。但就目前而言,这个问题可能需要一些改进......

标签: php while-loop fizzbuzz


【解决方案1】:
$i = 1;

while ($i <= 100) {

    $r = '';

    if ($i % 3 === 0) {
        $r .= 'Fizz';
    }

    if ($i % 5 === 0) {    
        $r .= 'Buzz';        
    }

    if (!$r) {
        $r = $i;
    }

    echo "$r\n";
    ++$i;
}

在线演示:http://ideone.com/WbXZEd

【讨论】:

  • 您能否对此答案进行一些解释?我知道只允许使用代码答案,但来吧。这对谁真正有帮助?
  • @ircmaxel:这个答案只包含琐碎的运算符和结构。如果 OP 无法识别任何特定的 - 我很乐意解释一个。但我不会解释 =&lt;= 是做什么的 - 有 php 手册。
  • 打印结果不正确——没有数字。检查这个维基c2.com/cgi/wiki?FizzBuzzTest
  • @omarithawi 它会产生正确的结果。请检查答案中提供的链接。谢谢。
  • @zerkms 当然,我做到了!检查this screenshot您提供的以Fizz,Buzz 开头的链接。 correct FizzBuzz1,2,Fizz,4,Buzz... 开头。谢谢
猜你喜欢
  • 1970-01-01
  • 2018-05-20
  • 1970-01-01
  • 2017-05-19
  • 1970-01-01
  • 2021-12-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多