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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Java

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

Q&A

1回答

2276閲覧

(Java)生年月日を渡したら年齢を計算するプログラム

fall

総合スコア12

Java

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

0グッド

0クリップ

投稿2020/04/20 07:56

編集2020/04/20 08:03

引数として生年月日を渡したらそれを元に年齢を計算するプログラムを作りたいです。
日付文字列として処理できる文字列が渡されたら終了ステータスを0、
日付文字列として処理できない文字列が渡された場合は終了ステータスを1にしてエラーメッセージを表示させ終了させます。

一先ずサイトを参考にしてコードを書いたのですが、入力ができないまま
「[西暦年] [月] [日]」と実行されてしまいます。
改善点を教えていただければ幸いです。

Java

1import java.util.Calendar; 2 3public class CalcAge { 4 public static void main( String[] args ) { 5 // 変数の宣言 6 int year_birth; // 誕生日の西暦年 7 int month_birth;// 誕生日の月 8 int day_birth; // 誕生日の日 9 10 // 入力した引数が3つ以上かを調べる 11 if ( 3 >args.length ) { 12 // 入力した引数が3つ未満の場合、使用方法を表示する 13 System.out.println( "[西暦年] [月] [日]" ); 14 return; 15 } 16 17 // 引数をint型に変換し、年/月/日に代入 18 try { 19 // args[0],args[1],args[2]を数値に変換 20 year_birth = Integer.parseInt( args[ 0 ] ); 21 month_birth = Integer.parseInt( args[ 1 ] ); 22 day_birth = Integer.parseInt( args[ 2 ] ); 23 } 24 catch( NumberFormatException ne ) 25 { 26 // args[0],args[1],args[2]のどれかが数字ではない 27 System.out.println( "生年月日の取得に失敗しました" ); 28 return; 29 } 30 31 // 誕生日の数値チェック 32 if ( 0 > year_birth ) { 33 System.out.println( "西暦年に0以上を指定してください" ); 34 return; 35 } 36 if ( ( 1 > month_birth ) || ( 12 < month_birth ) ) { 37 System.out.println( "月に1~12を指定してください" ); 38 return; 39 } 40 if ( ( 1 > day_birth ) || ( 31 < day_birth ) ) { 41 System.out.println( "日に1~31を指定してください" ); 42 return; 43 } 44 45 // 変数の宣言 46 int year_today; // 現在の西暦年 47 int month_today; // 現在の月 48 int day_today; // 現在の日 49 50 // 今日の生年月日を変数に代入 51 Calendar calendar = Calendar.getInstance(); 52 year_today = calendar.get( Calendar.YEAR ); 53 month_today = calendar.get( Calendar.MONTH ) + 1; 54 day_today = calendar.get( Calendar.DAY_OF_MONTH ); 55 56 // 変数の宣言 57 int age; // 計算する年齢 58 59 // 年齢の計算 60 // 西暦年の差をageに代入 61 age = year_today - year_birth; 62 // まだ誕生月になっていなければ 63 if ( month_today < month_birth ) 64 -- age; // 1年引く 65 else { 66 // まだ誕生月日になっていなければ 67 if ( month_today == month_birth ) { 68 if ( day_birth < day_today ) 69 -- age; // 1年引く 70 } 71 } 72 73 // 計算結果を表示 74 System.out.println( age + "歳です" ); 75 } 76}

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

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

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

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

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

y_waiwai

2020/04/20 08:00

このままではコードが読みづらいので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
fall

2020/04/20 08:03

慣れておらずすみません。修正しました。
guest

回答1

0

一先ずサイトを参考にしてコードを書いたのですが、入力ができないまま

「[西暦年] [月] [日]」と実行されてしまいます。

実行方法が間違っています。argsから値をとっているので、java CalcAge.java 2001 10 21のようにコマンド実行時点で引数として指定する必要があります。

投稿2020/04/20 08:04

maisumakun

総合スコア146018

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問