可読性は最悪
2017年のとき1月が入ってしまうのは勘弁してください。
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.Month;
import java.time.YearMonth;
import java.util.Arrays;
import java.util.stream.IntStream;
public class PremiumFriday {
public static void main(String[] args) {
String year = "2017";
Arrays.stream(Month.values()).map(m ->IntStream.range(1,YearMonth.of(Integer.parseInt(year), m).atEndOfMonth().lengthOfMonth()+1).mapToObj(d -> LocalDate.of(Integer.parseInt(year), m, d)).filter(d -> DayOfWeek.FRIDAY.equals(d.getDayOfWeek())).max(LocalDate::compareTo)).forEach(o -> System.out.println(o.get()));
}
}
元ネタ
プレミアムフライデーを求めるメソッドを作った
プレミアムフライデーを求めるメソッドを作った(Java8版)
※※※
yearをStringにしたのは「argsから取ろうかなー?でも渡すのめんどくさいなー」とか考えてたなごりでした。あとJavaで入力値ってなんとなくStringな気がして。Intかjava.time.Yearが自然ですね。