FizzBu​​zz程序:如何使输出正确?

时间:2010-07-10 21:35:05

标签: java fizzbuzz

我对这个程序有疑问,它说: FizzBu​​zz挑战:显示从1到x的数字,将'fizz'替换为3的倍数,将'buzz'替换为5的倍数和'fizzbuzz'结果必须是:1 2 fizz 4 buzz fizz 7 8 fizz buzz 11 fizz 13 14 fizzbuzz 16 ...

所以我的问题是当时打印输出,我不知道该怎么做。

public class Multiplos {

    public static void main(String args[]) {

        for (int i = 1; i <= 100; i++) {

            if (i % 3 == 0) {
                System.out.print(i + " ");
                System.out.print(" fizz ");
            }

            if (i % 5 == 0) {
                System.out.print(" " + i);
                System.out.print(" " + "buzz ");
            }

            if((i % 3 == 0)&&(i % 5 == 0)){
                System.out.print(i + " ");
                System.out.print(" fizzbuzz ");
            }

        }

    }
}

4 个答案:

答案 0 :(得分:4)

这是伪代码:

for i in 1 to 100
   if(i % 5 == 0) AND (i % 3 == 0) print 'fizzbuzz'
   else if(i % 3 == 0) print 'fizz'
   else if(i % 5 == 0) print 'buzz'
   else print i

我会把它作为练习让你把它转换成Java,因为这可能有助于理解它是如何工作的。

答案 1 :(得分:3)

问题当然是当(i % 3 == 0)&&(i % 5 == 0)为真时,前面两个条件也是如此,因此你得到重复的输出。解决这个问题的最简单方法是在前两种情况下检查其他条件是否为真。即第一个条件if((i % 3 == 0)&&(i % 5 != 0))和第二个条件相同。

你的代码的另一个问题是你在任何一个案例都是真的时打印这个号码,但你应该在没有这些案例时打印它。您可以通过制作第四个if条件来检查没有条件为真,如果是,则打印i。

现在如果您执行了上述操作,您会发现最终导致了一些代码重复。如果你仔细想一想,你会发现你可以通过使用if - else if - else if - else来轻松解决这个问题,这可以让你假设在检查当前条件时先前的条件是假的。 / p>

答案 2 :(得分:2)

嗯,我想我只会提示:

  1. 想一想正确的顺序:如果一个数字是3的倍数,但是(3和5)的数字会怎么样?
  2. else if声明。

答案 3 :(得分:1)

使用else if以使条件不重叠。