質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

String

Stringは、ゼロ以上の文字から連続してできた文字の集合を扱うデータ型です。基本的にテキストを表すために使われます。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

1回答

1503閲覧

和暦を西暦だけじゃなく月日まで判断する。

hona_tan

総合スコア45

標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

String

Stringは、ゼロ以上の文字から連続してできた文字の集合を扱うデータ型です。基本的にテキストを表すために使われます。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2020/12/03 05:36

回答者様のおかげで曜日はきちんと出力されるようになりました。
ただ和暦を出力する際に「1912 6 1」と入力すると、
「1912(大正1)年 6月1日 (土)」と出てしまいます。
本当は「1912(明治45)年 6月1日 (土)」になって欲しいです。
toWareki()のところをどうすれば西暦と月日で判断できるのかご教授お願いします。

MyBirthday.java

class MyBirthday { int year, month, day; MyBirthday(int y, int m, int d) { year = y; month = m; day = d; } public String toWareki() { int i; if (year>=2019) { i = year - 2019 + 1; return "令和" +i; } else if (year>=1989){ i = year - 1989 + 1; return "平成" +i; } else if (year>=1926) { i = year - 1926 + 1; return "昭和" +i; } else if (year>=1912) { i = year - 1912 + 1; return "大正" +i; } else if (year>=1868){ i = year - 1868 + 1; return "明治" +i; } return null; } public String getDayOfWeek() { if (month == 1 || month == 2) { year = year - 1; month = month + 12; } int h = (year + year / 4 - year / 100 + year / 400 + (13 * month + 8) / 5 + day) % 7; if (h == 0) { return "日"; } else if (h == 1) { return "月"; } else if (h == 2) { return "火"; } else if (h == 3) { return "水"; } else if (h == 4) { return "木"; } else if (h == 5) { return "金"; } else if (h == 6){ return "土"; } return null; } public String toString() { return year+ "(" +toWareki()+ ")年 " +month+ "月" +day+ "日 (" +getDayOfWeek()+ ") "; } }

MyBirthdayTest.java

import java.util.Scanner; public class MyBirthdayTest { public static void main(String[] args) { System.out.println("生年月日を入力してください。"); Scanner str = new Scanner(System.in); int year = str.nextInt(); int month = str.nextInt(); int day = str.nextInt(); MyBirthday m = new MyBirthday(year, month, day); System.out.println(m); } }

Eclipse_2020-06を使っています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2020/12/03 05:53 編集

年ではなく JDN で比較する。 https://en.m.wikipedia.org/wiki/Julian_day > JDN = (1461 × (Y + 4800 + (M − 14)/12))/4 +(367 × (M − 2 − 12 × ((M − 14)/12)))/12 − (3 × ((Y + 4900 + (M - 14)/12)/100))/4 + D − 32075
guest

回答1

0

ベストアンサー

year>=1912にヒットして
1912-1912+1=1で大正1年になっているので、
一番はSimpleDateFormatを使ってみては?
曜日も取得できるよ。
参考

投稿2020/12/05 04:49

snowshink

総合スコア138

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hona_tan

2020/12/05 06:28

うまく実行できました! ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問