FizzBuzz/Java: Difference between revisions
No edit summary |
|||
Line 105: | Line 105: | ||
; |
; |
||
} |
} |
||
}</lang> |
|||
=== OO style === |
|||
<lang java>public class FizzBuzz { |
|||
public static void main(String[] args) { |
|||
SoundMakerGroup soundMakerGroup = new SoundMakerGroup(new SoundMaker(3, "Fizz"), new SoundMaker(5, "Buzz")); |
|||
for (int i = 1; i <= 100; i++) { |
|||
System.out.println(soundMakerGroup.generate(i)); |
|||
} |
|||
} |
|||
private static class SoundMaker { |
|||
private final int trigger; |
|||
private final String sound; |
|||
public SoundMaker(int trigger, String sound) { |
|||
this.trigger = trigger; |
|||
this.sound = sound; |
|||
} |
|||
public String generate(int i) { |
|||
return i % trigger == 0 ? sound : ""; |
|||
} |
|||
} |
|||
private static class SoundMakerGroup { |
|||
private final SoundMaker soundMakers[]; |
|||
public SoundMakerGroup(SoundMaker... soundMakers) { |
|||
this.soundMakers = soundMakers; |
|||
} |
|||
public String generate(int i) { |
|||
String sound = ""; |
|||
for (SoundMaker soundMakers : soundMakers) { |
|||
sound += soundMakers.generate(i); |
|||
} |
|||
return sound.isEmpty() ? String.valueOf(i) : sound; |
|||
} |
|||
} |
|||
}</lang> |
}</lang> |
Revision as of 06:57, 19 August 2015
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) { SoundMakerGroup soundMakerGroup = new SoundMakerGroup(new SoundMaker(3, "Fizz"), new SoundMaker(5, "Buzz")); for (int i = 1; i <= 100; i++) { System.out.println(soundMakerGroup.generate(i)); } }
private static class SoundMaker { private final int trigger; private final String sound;
public SoundMaker(int trigger, String sound) { this.trigger = trigger; this.sound = sound; }
public String generate(int i) { return i % trigger == 0 ? sound : ""; } }
private static class SoundMakerGroup { private final SoundMaker soundMakers[];
public SoundMakerGroup(SoundMaker... soundMakers) { this.soundMakers = soundMakers; }
public String generate(int i) { String sound = ""; for (SoundMaker soundMakers : soundMakers) { sound += soundMakers.generate(i); } return sound.isEmpty() ? String.valueOf(i) : sound; } }
}</lang>