尝试运行FizzBu​​zz时尝试输出“ Fizz”时出错

时间:2019-07-19 15:54:23

标签: java

我正在尝试编写一个简单的FizzBu​​zz程序,该程序可轻松编辑以使用不同的数字以及需要的更多数字。

当我运行该程序时,数字会正确打印,而“ Buzz”会正确打印。但是,当我打印“ Fizz”时,它会打印Fizz,然后在下一个数字上也将打印Fizz和数字。

例如:

1, 2, Fizz, Fizz4, Buzz.

public void Buzz(int limit){
    for(int i = 1; i<limit; i++){
        if(i%3 == 0){
            output += "Fizz";
            System.out.println(output);
        }
        if(i%5 == 0){
            output += "Buzz";
            System.out.println(output);
        }else{
            output += i;
            System.out.println(output);
        }
        output = "";
    }
}

1 个答案:

答案 0 :(得分:1)

您的代码当前检查是否为i % 3 == 0,然后检查是否为i % 5 == 0。如果第二个if语句失败,那么除了Fizz以外的其他数字(如果之前已打印出)。

如果您不想使用%15,则可能会认为它类似于代码here,这样会使您的代码看起来像这样:

public void Buzz(int limit){
    for(int i = 1; i<limit; i++){

        boolean fizzOrBuzz = false;

        if(i % 3 == 0){
            fizzOrBuzz = true;
            System.out.print("Fizz");
        }

        if(i % 5 == 0){
            fizzOrBuzz = true;
            System.out.print("Buzz");
        }

        if (fizzOrBuzz) {
            System.out.println();
        } else {
            System.out.println(String.valueOf(i));
        }
    }
}

或者,此answer提供了使用%15的版本,您可能会觉得更好。

编辑:根据@Nexevis的评论,将println更新为print