入力された数字を英語の月に変換するプログラムを作成したいのですが
現在
if(a==1){
System.out.println("Janualy);
}
のようにif文を12個記述し変換しているのですが、
記述量が多いため、簡略化できるような関数があれば教えていただきたいです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答6件
0
Javaランタイム標準で定義された英文字を出力するのであれば、
java
1Calendar c = Calendar.getInstance(); 2c.set(2018, 8, 1); 3SimpleDateFormat sdf = new SimpleDateFormat("MMMM", new DateFormatSymbols(Locale.US)); 4System.out.println(sdf.format(c.getTime()));
結果>September
Java8以降で使えるLocalDateTimeを使うならば、
java
1LocalDateTime ldt = LocalDateTime.of(2018, 9, 1, 12, 0, 0); 2DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMMM"); 3ldt.format(formatter); 4System.out.println(ldt.getMonth());
結果>SEPTEMBER
で良いでしょうか。
投稿2018/03/12 03:43
総合スコア12011
0
月などに限りませんが、idと文字列を変換するなら
それ用の配列を定義しておくのがわかりやすいかも。
もちろん範囲外かのチェックは必要ですがね~
投稿2018/03/12 03:34
総合スコア7466
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
SimpleDateFormat使えば一発じゃね?
// import java.util.*; // import java.text.*; // a = 9; Calendar c = Calendar.getInstance(); c.set(2018, a - 1, 1); SimpleDateFormat sdf = new SimpleDateFormat("MMMM"); System.out.println(sdf.format(c.getTime())); // Septemberが出力される
投稿2018/03/12 02:59
総合スコア5572
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

0
jshell で試してみます。
java
1import java.time.format.TextStyle; 2import java.time.Month; 3 4Month.of(1).getDisplayName(TextStyle.FULL, Locale.JAPAN); 5Month.of(1).getDisplayName(TextStyle.FULL, Locale.US); 6 7Month.of(12).getDisplayName(TextStyle.FULL, Locale.JAPAN); 8Month.of(12).getDisplayName(TextStyle.FULL, Locale.US); 9 10String[] WA_MONTHS = {"", "睦月", "如月", "弥生", "卯月", "皐月", "水無月", "文月", "葉月", "長月", "神無月", "霜月", "師走"}; 11WA_MONTHS[1]; 12WA_MONTHS[12]
a に 1.. 12 を設定して
System.out.println(Month.of(n).getDisplayName(TextStyle.FULL, Locale.US));
とする、
Strring[] で {"January", "February", ... } の様な配列 NAMES をつくり、
System.out.println(NAMES[n]); とするといった方法がで
12 個の if 文を使わずに処理することができそうです。
参考情報:
- Java – How to get a list of Month Names with Locale
https://memorynotfound.com/java-get-list-month-names-locale/
投稿2018/03/12 04:34
総合スコア22328
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
今回は英語への変換ですが、
標準の仕組みで変換できないような文字列にしたい場合は switch を使っても良いかもしれません。
java
1String str = null; 2switch (a) { 3 case 1: str = "いちがつ"; break; 4 case 2: str = "にがつ"; break; 5 case 3: str = "さんがつ"; break; 6 ... 7 default: str = "なんか変な数字がきましたけど [" + a + "]"; break; 8} 9System.out.println(str);
if 文よりは多少すっきりする気がします。
投稿2018/03/12 03:36
総合スコア1126
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/12 04:33