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

Java FizBuzz程序:如何使输出正确?,java,fizzbuzz,Java,Fizzbuzz,我问了一个关于这个程序的问题,它说:FizzBuzz挑战:显示从1到x的数字,将“fizz”替换为3的倍数,“buzz”表示5的倍数,“FizzBuzz”表示3和5的倍数。结果必须是:12嘶嘶声4嘶嘶声7 8嘶嘶声11嘶嘶声13 14嘶嘶声16… 所以我的问题是在打印输出时,我不知道该怎么办 public class Multiplos { public static void main(String args[]) { for (int i = 1; i <=

我问了一个关于这个程序的问题,它说:FizzBuzz挑战:显示从1到x的数字,将“fizz”替换为3的倍数,“buzz”表示5的倍数,“FizzBuzz”表示3和5的倍数。结果必须是:12嘶嘶声4嘶嘶声7 8嘶嘶声11嘶嘶声13 14嘶嘶声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 ");
            }

        }

    }
}
公共类多路复用器{
公共静态void main(字符串参数[]){

对于(int i=1;i来说,问题当然是当
(i%3==0)和&(i%5==0)
为真时,前面的两个条件也为真,因此您会得到重复的输出。解决这个问题的最简单方法是检查前两种情况下的另一个条件是否为真。即,如果((i%3==0)和(i%5!=0),则生成第一个条件
,第二个也一样

代码的另一个问题是,当任何情况都为真时,您正在打印数字,但当所有情况都为真时,您应该打印数字。您可以通过生成第四个if条件来解决此问题,该条件检查所有条件是否为真,如果为真,则打印i


现在,如果您执行了上述操作,您将看到最终出现了一些代码重复。如果您仔细考虑一下,您将看到,您可以通过使用if-else if-else if-else轻松解决这个问题,它允许您在检查当前条件时假设先前的条件为false。

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

代码的另一个问题是,当任何情况都为真时,您正在打印数字,但当所有情况都为真时,您应该打印数字。您可以通过生成第四个if条件来解决此问题,该条件检查所有条件是否为真,如果为真,则打印i

现在,如果您执行了上述操作,您将看到最终出现了一些代码重复。如果您仔细考虑一下,您将看到,您可以通过使用if-else if-else if-else轻松解决此问题,这允许您在检查当前条件时假设先前的条件为false。

以下是伪代码:

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,因为这可能有助于理解它是如何工作的。

以下是伪代码:

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,因为这可能有助于理解它是如何工作的。

如果使用
else if
,那么条件就不会重叠。

如果使用
else if
,那么条件就不会重叠。

嗯,我想我只提示一下:

  • 思考正确的顺序:如果一个数字是3的倍数,但也是(3和5)的倍数,会发生什么
  • 有一个
    else if
    语句

  • 嗯,我想我只想暗示一下:

  • 思考正确的顺序:如果一个数字是3的倍数,但也是(3和5)的倍数,会发生什么
  • 有一个
    else if
    语句

  • 维基百科上有很多答案,维基百科上有很多答案。