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

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

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

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

Q&A

解決済

2回答

813閲覧

日付判定プログラムを書いています。

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

0グッド

0クリップ

投稿2018/06/23 02:28

java

1package renshu; 2 3import java.text.DateFormat; 4 5public class CalenderJudge { 6 7public static boolean checkDate(String strDate) { 8 strDate = strDate.replace('-','/'); 9 DateFormat format = DateFormat.getDateInstance(); 10 format.setLenient(false); 11 try { 12 if(strDate == null || strDate.length() != 10) 13 System.out.println("引数の文字列は不正です。"); 14 return true; 15 }catch(Exception e) { 16 return false; 17 } 18     19    ここから先が、到達不能コードになっています。 20 //日付時刻解析を、厳密に行うかどうかを設定する。 21 /*try { 22 format.parse(strDate); 23 return true; 24 }catch(Exception e) { 25 return false; 26 }*/ 27 } 28 public static void main(String[] args) { 29 System.out.println(checkDate("2007-02-31")); 30 31 } 32} 33 34```到達不能コードになってしまい困っています。 35  やりたいこと 36  日付判定 37  (2008/10/12は日付があっています。 38   2009/1/12は、0が月に抜けているので間違っています。と出力したいです。)

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

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

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

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

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

guest

回答2

0

java

1 try { 2 if(strDate == null || strDate.length() != 10) 3 System.out.println("引数の文字列は不正です。"); 4 return true; 5 }catch(Exception e) { 6 return false; 7 }

ifを満たそうが満たすまいが、なにかしらのbooleanを返してメソッドを抜けてしまうため、この後のコードは実行しようがありません。そもそもこのtryブロックは何の例外が発生することを考えているのでしょうか…?

この部分で文字列としての妥当性を調べただけなのならば、まだ「日付文字列として妥当かどうか」の結論は出せないことになります。つまり、この段階でtrueを返すのは無理ということになります。return trueを削除しましょう。

また、この用途ならば前半のこのコード自体不要かと思います。

投稿2018/06/23 02:54

swordone

総合スコア20649

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

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

退会済みユーザー

退会済みユーザー

2018/06/23 03:17

ご回答ありがとうございました! まだまだ勉強不足ですが、頑張ります。
guest

0

ベストアンサー

return するとメソッドから抜けちゃうので下には行けません。

try { if(strDate == null || strDate.length() != 10) System.out.println("引数の文字列は不正です。"); return true; }catch(Exception e) { return false; }

if(strDate == null || strDate.length() != 10) { System.out.println("引数の文字列は不正です。"); return false; // ifの中に入ったときだけメソッドを抜ける }

投稿2018/06/23 02:54

shun-K

総合スコア508

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

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

退会済みユーザー

退会済みユーザー

2018/06/23 03:17

ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問