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); } } }
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/11 11:48
2021/07/11 12:26