FizBuzz程序:如何使输出正确?

我对这个程序提出了一个问题,它说:FizzBu​​zz挑战:显示从1到x的数字,将'fizz'替换为3的倍数,将'buzz'替换为5的倍数,将'fizzbuzz'替换为3和3的倍数5.结果必须是: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 ");
            }

        }

    }
}
    
已邀请:
这是伪代码:
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,因为这可能有助于理解它是如何工作的。     
问题当然是当
(i % 3 == 0)&&(i % 5 == 0)
为真时,前面两个条件也是正确的,所以你得到重复的输出。解决这个问题的最简单方法是在前两种情况下检查其他条件是否为真。即第一个条件是
if((i % 3 == 0)&&(i % 5 != 0))
,第二个条件相同。 您的代码的另一个问题是,当任何情况都是真的时,您打印的是数字,但是当它们都不是时,您应该打印它。您可以通过制作第四个if条件来检查没有条件为真,如果是,则打印i。 现在,如果您执行上述操作,您将看到最终出现了一些代码重复。如果你仔细考虑一下,你会发现你可以通过使用if - else if - else if - else来轻松解决这个问题,这可以让你假设在检查当前条件时先前的条件是假的。     
嗯,我想我只会暗示: 想一想正确的顺序:如果数字是3的倍数,而且(3和5)的数字是多少? 有一个
else if
声明。     
使用
else if
使条件不重叠。     

要回复问题请先登录注册