CUBは子供の白熊

Java SE 8 実践プログラミングの練習問題を解く

2015-08-01から1ヶ月間の記事一覧

第5章 日付と時刻の新たな API : 問題 12 : 約束の通知

問題 異なるタイムゾーンにある約束を読み込んで、ローカル時刻で1時間前に約束があることをユーザーに通知せよ 例えば、ニューヨークで午前10時に電話会議があったときも、今いる東京で正しいローカル時間に通知を受けることができる 解答 約束とは、タイト…

第5章 日付と時刻の新たな API : 問題 11 : 飛行時間

問題 帰りの便は、フランクフルトを14時5分に出発し、ロサンジェルスに16時40分に到着する 飛行時間は何時間何分か? 個別に計算するのではなく、このような時刻計算を処理できるプログラムを書け 解答 問題10で定義したFlightクラスにメソッドを追加しよう ■…

第5章 日付と時刻の新たな API : 問題 10 : 飛行機の到着時間

問題 ロサンジェルスからフランクフルト行きの便は、ローカル時刻の3時50分に出発し、10時間50分のフライトである 何時に到着するか? 個別に計算するのではなく、このような時刻計算を処理できるプログラムを書け 解答 ただメソッドを書いてもつまらないので…

第5章 日付と時刻の新たな API : 問題 9 : 分の端数がある時差

問題 全てのタイムゾーンおいて、UTC との時差に1時間未満の情報が含まれる全てのタイムゾーンを見つけよ 解答 “1時間未満の情報が含まれる” とは、「時差が1時間より小さい」ということではなく、「時差に分の端数が出る」という意味だと解釈した では、時…

第5章 日付と時刻の新たな API : 問題 8 : タイムゾーンと時差

問題 現在の時刻インスタンスに対してサポートされる全てのタイムゾーンおいて、今日の日付のオフセット(UTC との差)を取得せよ 解答 UTC との時差は、以下の流れで算出する ゾーンID(ZoneId) ↓ そのゾーンIDの日付時間(ZonedDateTime) ↓ UTC の日付時…

第5章 日付と時刻の新たな API : 問題 7 : イベント

問題 カレンダーのイベント(例えば、指定された日付の午前10時から午後11時まで)に適した、時刻のインターバルを表す TimeInterval クラスを実装せよ あと、二つのインターバルが重なっているかどうかを検査するメソッド提供せよ 解答 “指定された日付の” …

第5章 日付と時刻の新たな API : 問題 6 : 13日の金曜日

問題 20世紀の全ての13日の金曜日を列挙せよ 解答 この章の練習問題は、練習問題らしい難易度ですね サクサク行きましょう YearMonth month = YearMonth.of(1901, Month.JANUARY); YearMonth lastMonth = YearMonth.of(2000, Month.DECEMBER); while (month.…

第5章 日付と時刻の新たな API : 問題 5 : 日数計算

問題 今までにあなたが生きてきた日数を表示するプログラムを書け 解答 私の年齢はご勘弁を... 代わりに、Java 生誕20周年を祝して、Java が生きてきた日数を表示します 試しに和暦を使ってみます JapaneseDate birthday = JapaneseDate.of(JapaneseEra.HEIS…

第5章 日付と時刻の新たな API : Temporal って何?

時間(時間の経過ではない)を意味する英語はたくさんある 一般的な Time の他に Instant Temporal Chrono Date Era 時間の経過を意味する英語は Duration Period など java.timeパッケージのインターフェース, クラスには、これらが全て現れる ん~、便利な…

第5章 日付と時刻の新たな API : 問題 4 : カレンダー

問題 指定された月のカレンダーを表示するプログラムを書け 例えば java Cal 3 2013 を実行すると、次のように表示する 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 週は、月曜日から始まるものとする 解答 コマ…

第5章 日付と時刻の新たな API : 問題 3 : TemporalAdjuster

問題 Predicate<LocalDate>を受け取りTemporalAdjusterを返すnextメソッドを実装せよ 戻り値のTemporalAdjusterは、翌日以降でPredicateを満たす日付を生成する 例えば today.with(next(w -> w.getDayOfWeek().getValue() < 6)) は、今日より後の最初の平日の日付を返す</localdate>…

日付と時刻の新たな API : 問題 2 : 日付の加算

問題 LocalDate.of(2000, 2, 29)に1年を加算するとどうなるか? 解答 JavaDoc に 無効なときは「月の日」を最後の有効な日に調整します とあるので、2001年2月28日になる LocalDate date = LocalDate.of(2000, 2, 29); date = date.plusYears(1); // 2001/2/2…

第5章 日付と時刻の新たな API : 問題 1 : プログラマーの日

問題 plusDaysメソッドを使用しないで、プログラマーの日を計算せよ ちなみに、プログラマーの日は、元旦から256日目にあたる日のことで、ロシアでは公式の祝日になっている 解答 今年のプログラマーの日を計算するメソッドを実装する ■ 今年が何年かを調べ…

第5章 日付と時刻の新たな API

日付を表すjava.util.Dateクラスの機能は確かに不十分だが、それを補うために JDK 1.1 で導入されたjava.util.Calendarは、ちょっといただけなかった インスタンスを生成するメソッドが貧弱 … 結局Dateを使うことになる SimpleDateFormatが対応していないの…

第4章 JavaFX による GUI プログラミング : 問題 10 : ブラウザ

問題 WebViewerを使用して、URLバーと戻るボタンを持つブラウザを実装せよ 解答 やってみましょう public void start(Stage stage) throws Exception { // 末端のコントロール Button backButton = new Button("戻る"); TextField urlField = new TextField(…

第4章 JavaFX による GUI プログラミング : 問題 9 : アニメーション

問題 惑星を表す円をアニメーション化して、楕円軌道を回るようにせよ 解答 絵はしょぼいですが、やってみましょう public void start(Stage stage) throws Exception { final double rX = 200; final double rY = 160; final double cX = rX + 24; final do…

第4章 JavaFX による GUI プログラミング : 問題 8 : FXML

問題 FXML ファイルを解析する際には、JavaFX 固有の知識は必要ない JavaFX で何もせずに、入れ子になっているオブジェクトを持つオブジェクトをロードし、FXML 構文でプロパティを設定する例を作成せよ 注入を使用できれば、さらに良い 解答 この問題も、出…

第4章 JavaFX による GUI プログラミング : 問題 7 : CSS

問題 CSS を使用しないで、コントロールの境界を設定する方法を調べよ 境界について “境界” というのは、下の図(CSS Box Model)の Border だよね CSS はNodeクラスに適用できるが、Border プロパティを持っているのはNodeの派生クラスのRegionである Borde…