如何在JAVA中使用循环创建FizzBu​​zz

时间:2016-09-23 03:55:02

标签: java loops fizzbuzz

我正在为学校写这个问题而且我有一些问题。我无法获得" printFizzBu​​zz"实际上去计算包装函数" FizzBu​​zz"。我需要使用循环并尝试使用FOR循环。初学者程序员在这里没有,我根本没有使用循环。任何提示或指示? ;)

说明如下。

1, Duration: 33
1, Duration: 1478051

1 个答案:

答案 0 :(得分:1)

看看FizzBu​​zz功能:

public static String FizzBuzz(int number) 

public static STRING 告诉您此函数返回一个字符串。

每次你写 FizzBu​​zz(++ⅰ);
想象这是一个类似" Fizz"

的字符串

所以在你的程序中你真正写的是

for (int i = 1; i <= to; ++i){
    "Fizz";
}

那看起来不太好吗?你实际上需要将这个字符串分配给某个东西,或者用它来做一些事情。例如:

for (int i = 1; i <= to; ++i){
    String a = "Fizz";
    System.out.println(a);
}

更好的是,这是将它打印到标准输出!但是,您的函数已经有一个 PrintStream out 参数可用于打印!

for (int i = 1; i <= to; ++i){
    String a = FizzBuzz(i++); 
    out.println(a);
}

现在让我们来看看for循环:它创建一个从1开始的变量i( int i = 1 ),检查条件( i&lt; =到)并且如果条件满足则执行循环体。之后,它将i递增1( ++ i )。

所以循环的前3轮将如下展开:

    int i = 1;
    if(i<=to){
        String a = FizzBuzz(i++); 
        out.println(a);
    }
    ++i; //i = 3;
    if(i<=to){
        String a = FizzBuzz(i++); 
        out.println(a);
    }
    ++i; //i = 5;
    if(i<=to){
        String a = FizzBuzz(i++); 
        out.println(a);
    }
    ++i; //i = 7;

看起来我们这里仍有问题。为什么我3岁,5岁然后7岁? 2,4,6发生了什么?问题是,在调用FizzBu​​zz( FizzBu​​zz(i ++))时,您还将i递增1。

这是错误的,循环已经为你增加1,如果你再增加1,它将每轮增加2。

我会给你最后的解决方案。