FizzBuzz/Java: Difference between revisions

From Rosetta Code
Content added Content deleted
No edit summary
No edit summary
Line 111: Line 111:


public static void main(String[] args) {
public static void main(String[] args) {
SoundMakerGroup soundMakerGroup = new SoundMakerGroup(new SoundMaker(3, "Fizz"), new SoundMaker(5, "Buzz"));
Sound sound = new Sound(3, "Fizz", new Sound(5, "Buzz"));
for (int i = 1; i <= 100; i++) {
for (int i = 1; i <= 100; i++) {
System.out.println(soundMakerGroup.generate(i));
System.out.println(sound.generate(i));
}
}
}
}


private static class SoundMaker {
private static class Sound {
private final int trigger;
private final int trigger;
private final String sound;
private final String onomatopoeia;
private final Sound next;


public SoundMaker(int trigger, String sound) {
public Sound(int trigger, String onomatopoeia, Sound next) {
this.trigger = trigger;
this.trigger = trigger;
this.sound = sound;
this.onomatopoeia = onomatopoeia;
this.next = next;
}
}


public String generate(int i) {
public Sound(int trigger, String sound) {
return i % trigger == 0 ? sound : "";
this(trigger, sound, null);
}
}
}


public String generate(int i) {
private static class SoundMakerGroup {
StringBuilder sb = new StringBuilder();
private final SoundMaker soundMakers[];
generate(sb, i);

return sb.length() == 0 ? String.valueOf(i) : sb.toString();
public SoundMakerGroup(SoundMaker... soundMakers) {
}
this.soundMakers = soundMakers;
private void generate(StringBuilder sb, int i) {
if (i % trigger == 0)
sb.append(onomatopoeia);
if (next != null)
next.generate(sb, i);
}
}


public String generate(int i) {
String sound = "";
for (SoundMaker soundMakers : soundMakers) {
sound += soundMakers.generate(i);
}
return sound.isEmpty() ? String.valueOf(i) : sound;
}
}
}



Revision as of 07:08, 20 August 2015

FizzBuzz/Java is part of FizzBuzz. You may find other members of FizzBuzz at Category:FizzBuzz.

If/else ladder

<lang java>public class FizzBuzz{ public static void main(String[] args){ for(int i= 1; i <= 100; i++){ if(i % 15 == 0){ System.out.println("FizzBuzz"); }else if(i % 3 == 0){ System.out.println("Fizz"); }else if(i % 5 == 0){ System.out.println("Buzz"); }else{ System.out.println(i); } } } }</lang>

Concatenation

<lang java>public class FizzBuzz{ public static void main(String[] args){ for(int i= 1; i <= 100; i++){ String output = ""; if(i % 3 == 0) output += "Fizz"; if(i % 5 == 0) output += "Buzz"; if(output.equals("")) output += i; System.out.println(output); } } }</lang>

Ternary operator

<lang java>public class FizzBuzz{ public static void main(String[] args){ for(int i= 1; i <= 100; i++){ System.out.println(i % 15 != 0 ? i % 5 != 0 ? i % 3 != 0 ? i : "Fizz" : "Buzz" : "FizzBuzz"); } } }</lang>

Recursive

<lang java>public String fizzBuzz(int n){

 String s = "";
 if (n == 0)
   return s;
 if((n % 5) == 0)
   s = "Buzz" + s;
 if((n % 3) == 0)
   s = "Fizz" + s;
 if (s.equals(""))
   s = n + "";   
 return fizzBuzz(n-1) +  s;

}</lang>

Alternative Recursive

<lang java>public String fizzBuzz(int n){

 return (n>0) ? fizzBuzz(n-1) + 
   (n % 15 != 0? n % 5 != 0? n % 3 != 0? (n+"") :"Fizz" : "Buzz" : "FizzBuzz") 
              : "";

}</lang>

Using an array

<lang java>class FizzBuzz {

 public static void main( String [] args ) {
   for( int i = 1 ; i <= 100 ; i++ ) {
     System.out.println( new String[]{ i+"", "Fizz", "Buzz", "FizzBuzz" }[ ( i%3==0?1:0 ) + ( i%5==0?2:0 ) ]);
   }
 }

}</lang>

Lambda with Arrays

<lang java>class FizzBuzz {

 public static void main( String [] args ) {
   int [] x = new int [100];
   Arrays.setAll(x, j -> j++);
   Arrays.stream(x).forEach(i -> {
       if(i == 0) return;
       String output = "";
       if(i % 3 == 0) output += "Fizz";
       if(i % 5 == 0) output += "Buzz";
       if(output.equals("")) output += i;
       System.out.println(output);
   });
 }

}</lang>

Lambda with Streams

<lang java>package fizzbuzz;

import static java.util.stream.IntStream.rangeClosed;

public interface FizzBuzz {

 public static void main(String... arguments) {
   rangeClosed(1, 100)
     .mapToObj(i -> {
       if (i % (3 * 5) == 0) {
         return "FizzBuzz";
       } else if (i % 3 == 0) {
         return "Fizz";
       } else if (i % 5 == 0) {
         return "Buzz";
       } else {
         return Integer.toString(i);
       }
     })
     .forEach(System.out::println)
   ;
 }

}</lang>

OO style

<lang java>public class FizzBuzz {

   public static void main(String[] args) {
       Sound sound = new Sound(3, "Fizz", new Sound(5, "Buzz"));
       for (int i = 1; i <= 100; i++) {
           System.out.println(sound.generate(i));
       }
   }
   private static class Sound {
       private final int trigger;
       private final String onomatopoeia;
       private final Sound next;
       public Sound(int trigger, String onomatopoeia, Sound next) {
           this.trigger = trigger;
           this.onomatopoeia = onomatopoeia;
           this.next = next;
       }
       public Sound(int trigger, String sound) {
           this(trigger, sound, null);
       }
       public String generate(int i) {
           StringBuilder sb = new StringBuilder();
           generate(sb, i);
           return sb.length() == 0 ? String.valueOf(i) : sb.toString();
       }
       
       private void generate(StringBuilder sb, int i) {
           if (i % trigger == 0)
               sb.append(onomatopoeia);
           if (next != null) 
               next.generate(sb, i);
       }
   }

}</lang>