Hatena::Groupfizzbuzz

id:tyruが<del>毎日</del>気が向いたらFizzBuzzを一生懸命書く日記

 | 

2016-10-06

Java 8 で FizzBuzz

23:20 | はてなブックマーク - Java 8 で FizzBuzz - id:tyruが<del>毎日</del>気が向いたらFizzBuzzを一生懸命書く日記 Java 8 で FizzBuzz - id:tyruが<del>毎日</del>気が向いたらFizzBuzzを一生懸命書く日記 のブックマークコメント

package fizzbuzz;

import java.util.Optional;
import java.util.stream.IntStream;

public class FizzBuzz {

	/**
	 * Usage: java FizzBuzz [{from (default: 1)} [{to (default: 100)}]]
	 */
	public static void main(String[] args) {
		int min = Optional.ofNullable(args.length >= 1 ? tryParse(args[0], 1) : null).orElse(1);
		int max = Optional.ofNullable(args.length >= 2 ? tryParse(args[1], 100) : null).orElse(100);
		IntStream.rangeClosed(min, max).mapToObj(FizzBuzz::fizzbuzz).forEach(System.out::println);
	}

	private static Integer tryParse(String str, int def) {
		try {
			return Integer.parseInt(str);
		} catch (NumberFormatException e) {
			System.err.println("Invalid argument(" + str + "): '" + def + "' will be used instead.");
			return null;
		}
	}

	private static String fizzbuzz(int n) {
		return n % 15 == 0 ? "FizzBuzz" :
		       n % 5 == 0 ? "Buzz" :
		       n % 3 == 0 ? "Fizz" : n + "";
	}
}
 |