1

このプログラムについて質問がありました。FizzBu​​zzチャレンジ:1からxまでの数字を表示し、「fizz」を3の倍数に、「buzz」を5の倍数に、「fizzbuzz」を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 ");
            }

        }

    }
}
4

4 に答える 4

5

擬似コードは次のとおりです。

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に変換するための演習として残しておきます。これは、これがどのように機能するかを理解するのに役立つ可能性があるためです。

于 2010-07-10T21:41:48.083 に答える
3

もちろん、問題は、(i % 3 == 0)&&(i % 5 == 0)trueの場合、前述の2つの条件もtrueであるため、出力が重複することです。これを修正する最も簡単な方法は、最初の2つのケースで他の条件が真でないことを確認することです。つまり、最初の条件if((i % 3 == 0)&&(i % 5 != 0))を作成し、2番目の条件も同じにします。

コードのもう1つの問題は、いずれかのケースが当てはまる場合に数値を出力しているのに、いずれも当てはまらない場合に数値を出力することになっていることです。これを修正するには、4番目のif条件を作成して、どの条件も真でないことを確認し、真である場合はiを出力します。

上記を実行すると、コードが重複していることがわかります。少し考えてみると、if --else if --else if --elseを使用すると、簡単に修正できることがわかります。これにより、現在の条件がチェックされたときに前の条件がfalseであると見なすことができます。

于 2010-07-10T21:41:33.903 に答える
2

うーん、私はほのめかすだけだと思います:

  1. 正しい順序を考えてみましょう: ある数が 3 の倍数であるだけでなく、(3 と 5) の倍数でもある場合はどうなりますか?
  2. else if声明があります。
于 2010-07-10T21:45:15.477 に答える
1

else if条件が重ならないように使用してください。

于 2010-07-10T21:42:43.460 に答える