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

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

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

dateは、date型や日付に関する関数や処理についてのタグです

DTO(Data Transfer Object)

DTO(Data Transfer Object)とは、データを転送するために定義されたクラスのこと。関連データを集約し、データの格納や読み出しのメソッドを定義したオブジェクトです。データを管理するためのフィールド群に対応したセッター・ゲッターで構成されています。

DAO(Data Access Object)

DAO(Data Access Object)とは、データベースなどに保存するための操作を実装したオブジェクトのことです。データの永続化機構に抽象化されたインタフェースを提供し、データベースの詳細を隠蔽。ビジネスロジックとデータ操作も分離できます。

JDBC

JDBC(Java DataBase Connectivity)は、Javaとリーレーショナルデータベースに接続させる基本的なAPIです。Java上でSQLステートメントを発行することで、データベースの種類に影響を受ないDB操作を可能とします。

Java

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

Q&A

1回答

2453閲覧

JavaのDate型変数の受け渡しについて

Yakusugi

総合スコア123

date

dateは、date型や日付に関する関数や処理についてのタグです

DTO(Data Transfer Object)

DTO(Data Transfer Object)とは、データを転送するために定義されたクラスのこと。関連データを集約し、データの格納や読み出しのメソッドを定義したオブジェクトです。データを管理するためのフィールド群に対応したセッター・ゲッターで構成されています。

DAO(Data Access Object)

DAO(Data Access Object)とは、データベースなどに保存するための操作を実装したオブジェクトのことです。データの永続化機構に抽象化されたインタフェースを提供し、データベースの詳細を隠蔽。ビジネスロジックとデータ操作も分離できます。

JDBC

JDBC(Java DataBase Connectivity)は、Javaとリーレーショナルデータベースに接続させる基本的なAPIです。Java上でSQLステートメントを発行することで、データベースの種類に影響を受ないDB操作を可能とします。

Java

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

0グッド

0クリップ

投稿2021/07/11 11:08

Javaで家計簿アプリを作っています。
DBはMySQLで、DTO,DAOパターンでデータの受け渡しを行う使用にしています。

今回、問題があったのはDate型の取扱についてです。

下記MainClassの「budgetTrackerDto.setDate(date);」でエラーが起きており、
The local variable date may not have been initializedと書かれており,
data変数が宣言されていない的なメッセージが警告文として出ているのですが、
私としましては、Data変数を宣言している認識なのですが、
何故、当該エラーが起きているか、ヒントがあればご教示頂けますと幸いです。

ご回答のほど、よろしくお願いいたします。

MainClass.java

package DatabaseProgram; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Scanner; public class MainClass { public static void main(String[] args) { // TODO Auto-generated method stub BudgetTrackerSelectDao budgetTrackerSelectDao; BudgetTrackerDto budgetTrackerDto; Map<Integer, String> initialSwitchMap = new HashMap<>(); initialSwitchMap.put(1, "Select"); initialSwitchMap.put(2, "Insert"); initialSwitchMap.put(3, "Update"); initialSwitchMap.put(4, "Delete"); Scanner initialSwitchScanner = new Scanner(System.in); int initialNumInt = 0; do { String[] initialList = new String[] {initialSwitchMap.get(1), initialSwitchMap.get(2), initialSwitchMap.get(3), initialSwitchMap.get(4)}; for(Map.Entry<Integer, String> list : initialSwitchMap.entrySet()) { System.out.println(list.getKey() + ":" + list.getValue()); } System.out.print("Select a number: "); String initialNumStr = initialSwitchScanner.next(); initialNumInt = Integer.parseInt(initialNumStr); } while (initialNumInt >= 5 || initialNumInt <= 0); switch (initialNumInt) { case 1: ...  //長いのでここは省略 case 2: System.out.println("You chose " + initialSwitchMap.get(2)); BudgetTrackerInsertDao budgetTrackerInsertDao = new BudgetTrackerInsertDao(); //Type ID System.out.print("Type id: "); Scanner idScan = new Scanner(System.in); int id = idScan.nextInt(); //setting date format SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd"); Scanner dateScan = new Scanner(System.in); System.out.print("Type Date(yyyy-mm-dd): "); String str = dateScan.nextLine(); Date date; try { date = sdf.parse(str); sdf = new SimpleDateFormat("yyyy-mm-dd"); //System.out.println("Date: " + sdf.format(date)); String dateFormat = sdf.format(date); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } //type Store name System.out.print("Type Store name: "); Scanner storeScan = new Scanner(System.in); String storeName = storeScan.nextLine(); //type Product name System.out.print("Type Product name: "); Scanner productScan = new Scanner(System.in); String productName = productScan.nextLine(); //type Type name System.out.print("Type Type name: "); Scanner typeScan = new Scanner(System.in); String typeName = typeScan.nextLine(); //type Price name System.out.print("Type Price: "); Scanner priceScan = new Scanner(System.in); int price = priceScan.nextInt(); budgetTrackerDto = new BudgetTrackerDto(); budgetTrackerDto.setId(id); budgetTrackerDto.setDate(date); budgetTrackerDto.setStoreName(storeName); budgetTrackerDto.setProductName(productName); budgetTrackerDto.setType(typeName); budgetTrackerDto.setPrice(price); } } }

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

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

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

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

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

guest

回答1

0

The local variable date may not have been initialized

initializeは「初期化」です。つまり、「dateは初期化されていないかもしれません」という意味です。

java

1 2 Date date; 3 try { 4 date = sdf.parse(str); 5 sdf = new SimpleDateFormat("yyyy-mm-dd"); 6 //System.out.println("Date: " + sdf.format(date)); 7 String dateFormat = sdf.format(date); 8 } catch (ParseException e) { 9 // TODO Auto-generated catch block 10 e.printStackTrace(); 11 }

catchブロックに入った場合、dateが初期化されてない可能性が生まれます。

投稿2021/07/11 11:23

swordone

総合スコア20669

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

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

Yakusugi

2021/07/11 11:48

ご回答ありがとうございます。 上記部分については、自分でも気づいてはおりました。 ただ、date = sdf.parse(str);で初期化をしているとの認識なのですが、 こちらはtry/catchで囲まないとエラーとなってしまいます。 また、date = sdf.parse(str);はローカル変数となるため、どのようにグローバル変数として、他のメソッドからアクセスさせるべきでしょうか。 ご回答頂けますと幸いです。
swordone

2021/07/11 12:26

例外が発生した時にどうしたいかが問題です。 例外が発生しない想定でいるのだとしたら、ここでの例外は問題なので、キャッチせずに投げるべきでしょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問