初心者です。
手持ちの参考書にある以下のコードをeclipseにて実行したところ、
次のエラーメッセージが出てしまい、原因をネットで色々調べたのですが分からず困っています。
ItemDAOクラスにて、戻り値であるItem型ArrayListのitemsを「return items;」と書いて返しているのになぜでしょうか...?
ご教授をいただけると有り難いです。
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
このメソッドは型 ArrayList<Item> の結果を戻す必要があります
at ItemDAO.findByMinimumPrice(ItemDAO.java:9)
at Main.main(Main.java:5)
java
1import java.util.ArrayList; 2public class Main { 3 public static void main(String[] args) { 4 System.out.println("1円以上のアイテム一覧表を表示します"); 5 ArrayList<Item> items = ItemDAO.findByMinimumPrice(1); 6 for(Item item : items) { 7 System.out.printf("%10s%4d%4d",item.getName(), item.getPrice(), item.getWeight()); 8 } 9 } 10 11}
java
1import java.sql.Connection; 2import java.sql.DriverManager; 3import java.sql.PreparedStatement; 4import java.sql.ResultSet; 5import java.sql.SQLException; 6import java.util.ArrayList; 7 8public class ItemDAO { 9 public static ArrayList<Item> findByMinimumPrice(int i) { 10 try { 11 Class.forName("org.h2.Driver"); 12 }catch(ClassNotFoundException e) { 13 e.printStackTrace(); 14 } 15 Connection con = null; 16 try { 17 con = DriverManager.getConnection("jdbc:h2:~/example", "sa", ""); 18 PreparedStatement pstmt = con.prepareStatement 19 ("SELECT * FROM ITEMS WHERE PRICE > ?"); 20 pstmt.setInt(1, i); 21 ResultSet rs = pstmt.executeQuery(); 22 // ここでItemを入れていくArrayListを準備 23 ArrayList<Item> items = new ArrayList<Item>(); 24 while(rs.next()) { // 結果表の全行を1つずつ処理 25 Item item = new Item(); 26 item.setName(rs.getString("NAME")); /* 1行分の情報を */ 27 item.setPrice(rs.getInt("PRICE")); /* インスタンスに変換 */ 28 item.setWeight(rs.getInt("WEGIHT")); 29 items.add(item); /* インスタンスをArrayListに追加 */ 30 } 31 rs.close(); 32 pstmt.close(); 33 return items; /* 最後にArrayListを返す */ 34 } catch(SQLException e) { 35 e.printStackTrace(); 36 } finally { 37 if(con != null) { 38 try { 39 con.close(); 40 } catch(SQLException e) { 41 e.printStackTrace(); 42 } 43 } 44 } 45 } 46}
java
1public class Item { 2 private String name; 3 private int price; 4 private int weight; 5 public String getName() { 6 return this.name; 7 } 8 public int getPrice() { 9 return this.price; 10 } 11 public int getWeight() { 12 return this.weight; 13 } 14 public void setName(String name) { 15 this.name = name; 16 } 17 public void setPrice(int price) { 18 this.price = price; 19 } 20 public void setWeight(int weight) { 21 this.weight= weight; 22 } 23}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/27 07:49 編集
2020/08/27 07:49
2020/08/27 08:04 編集
2020/08/27 08:15 編集
2020/08/27 08:17
2020/08/27 08:29