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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java

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

Q&A

解決済

2回答

938閲覧

(急募)Javaのセッターゲッターの使い方がわかりません

n.t

総合スコア64

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java

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

0グッド

0クリップ

投稿2017/11/28 16:52

課題でJavaのプログラミングがでて困っております。
アクセスクラスとコントロールクラスの二つではデータのselectなどうまくいったのですが今課題のgeter seterを利用しなきゃいけないところで生きず待ってしまっております。

下記に私が挫折したコードがあります。
Javaに詳しい方助けてください。よろしくお願いします。

Java

1//アクセスクラス 2import java.sql.*; 3import java.util.ArrayList; 4import java.util.List; 5 6public class DataBase { 7 8 private Connection con = createConnection(); 9 10 private String Host = "jdbc:mysql://localhost:3306/shoseki"; 11 private String User = "root"; 12 private String Pass = ""; 13 14 private Connection createConnection() { 15 Connection con = null; 16 try { 17 Class.forName("com.mysql.jdbc.Driver"); 18 con = DriverManager.getConnection(Host,User,Pass); 19 }catch(ClassNotFoundException e) { 20 e.printStackTrace(); 21 }catch(SQLException e) { 22 e.printStackTrace(); 23 } 24 return con; 25 } 26 27 private void close(Connection con){ 28 try { 29 con.close(); 30 }catch(SQLException e) { 31 e.printStackTrace(); 32 } 33 } 34 35 public void Serch(String key, String value) { 36 String sql = "Select * From shoseki"; 37 ResultSet rs = null; 38 if(key != "null") { 39 sql = sql.concat(" where " + key + " LIKE " + "'%" + value + "%'"); 40 } 41 rs = SqlExec(sql); 42 SetResult(rs); 43 } 44 45 private ResultSet SqlExec(String sql) { 46 Statement stmt = null; 47 ResultSet rs = null; 48 try { 49 stmt = con.createStatement(); 50 rs = stmt.executeQuery(sql); 51 }catch(SQLException e) { 52 e.printStackTrace(); 53 } 54 return rs; 55 } 56 57 private void SetResult(ResultSet rs) { 58 List List = new ArrayList(); 59 while(rs.next()) { 60 Shoseki shoseki = new Shoseki(); 61 shoseki.setIsbn(rs.getString("isbn")); 62 shoseki.setTitle(rs.getString("title")); 63 shoseki.setAuthor(rs.getString("author")); 64 List.add(shoseki); 65 } 66 } 67}

Java

1// コントロールクラス 2import java.sql.*; 3import java.util.ArrayList; 4import java.util.List; 5 6class ShosekiManagementSystem { 7 8 private Shoseki shoseki; 9 public static void main(String[] args){ 10 11 String inputString; 12 int n; 13 14 ShosekiManagementSystem sms = new ShosekiManagementSystem(); 15 16 while(true) { 17 // Menu Display 18 System.out.println("********************"); 19 System.out.println("**書籍データベース**"); 20 System.out.println("****操作メニュー****"); 21 System.out.println("********************"); 22 System.out.println("1.登録"); 23 System.out.println("2.検索"); 24 System.out.println("3.更新"); 25 System.out.println("4.削除"); 26 System.out.println("9.終了"); 27 System.out.println(""); 28 System.out.println("> "); 29 30 inputString = new java.util.Scanner(System.in).nextLine(); 31 n = Integer.parseInt(inputString); 32 // End Determination 33 if(n == 9 ) break; 34 35 // Menu Number Check 36 switch(n) { 37 case 1: 38 sms.Insert(); 39 break; 40 case 2: 41 sms.Serch(); 42 break; 43 case 3: 44 sms.Update(); 45 break; 46 case 4: 47 sms.Delete(); 48 break; 49 default: 50 } 51 } 52 } 53 54 // Create 55 private void Insert() { 56 57 } 58 59 // Update 60 private void Update() { 61 62 } 63 64 // Delete 65 private void Delete() { 66 67 } 68 69 // Serch 70 private void Serch() { 71 DataBase DB = new DataBase(); 72 ResultSet rs; 73 String inputString; 74 int n; 75 76 while(true) { 77 // Menu Display 78 System.out.println("1.全件検索"); 79 System.out.println("2.ISBNから検索"); 80 System.out.println("3.書籍名から検索"); 81 System.out.println("4.著者から検索"); 82 System.out.println("9.戻る"); 83 System.out.println(""); 84 System.out.println("> "); 85 86 inputString = new java.util.Scanner(System.in).nextLine(); 87 n = Integer.parseInt(inputString); 88 89 // End Determination 90 if(n == 9) break; 91 92 // Menu Number Check 93 switch(n) { 94 case 1: 95 DB.Serch("null","null"); 96 ShowList(); 97 break; 98 case 2: 99 System.out.println(""); 100 System.out.println("ISBN番号による検索"); 101 System.out.println(""); 102 System.out.println("ISBN番号 ↓ "); 103 inputString = new java.util.Scanner(System.in).nextLine(); 104 DB.Serch("isbn",inputString); 105 ShowList(); 106 break; 107 case 3: 108 System.out.println(""); 109 System.out.println("タイトルによる検索"); 110 System.out.println(""); 111 System.out.println("タイトル ↓ "); 112 inputString = new java.util.Scanner(System.in).nextLine(); 113 DB.Serch("title",inputString); 114 ShowList(); 115 break; 116 case 4: 117 System.out.println(""); 118 System.out.println("著者による検索"); 119 System.out.println(""); 120 System.out.println("著者 ↓ "); 121 inputString = new java.util.Scanner(System.in).nextLine(); 122 DB.Serch("author",inputString); 123 ShowList(); 124 break; 125 default: 126 } 127 } 128 } 129 130 private void ShowList(){ 131 Shoseki List; 132 for(inr i = 0; i < List.size(); i++) { 133 List = (Shoseki) shoseki.get(i); 134 System.out.println("ISBN   :\t" + List.getIsbn); 135 System.out.println("タイトル :\t" + List.getTitle); 136 System.out.println("著者   :\t" + List.getAuthor); 137 } 138 } 139}

Java

1// ゲッター 2public class Shoseki { 3 4 private String isbn; 5 private String title; 6 private String author; 7 8 public String getIsbn() { 9 return this.isbn; 10 } 11 12 public void setIsbn(String isbn) { 13 this.isbn = isbn; 14 } 15 16 public String getTitle() { 17 return this.title; 18 } 19 20 public void setTitle(String title) { 21 this.title = title; 22 } 23 24 public String getAuthor() { 25 return this.author; 26 } 27 28 public void setAuthor(String author) { 29 this.author = author; 30 } 31}

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

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

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

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

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

swordone

2017/11/28 17:04

具体的に何で行き詰っているのですか?
n.t

2017/11/28 17:09 編集

セッターゲッターを介してコントロールクラスで表示ができないことです。 アクセスクラスではDBのアクセス以外させたくないのと コントロールクラスで表示させるときにゲッターから受け取る際に配列の中身を複数件取得することができませんでした。
toris-birds

2017/11/28 18:12

ぱっと見で、ShowList()の中身が怪しい感じですが、それ以外でセッターゲッターの問題があるということでしょうか?
num79kill

2017/11/28 23:31

SetResultにも問題あるし、コンパイルできないなか、教官に聞くといいと思うよ。課題でしよ
num79kill

2017/11/29 00:09

ちなみに急募や初心者などと件名に書くと回答率が著しく低下します。
YasuhiroMiyake

2017/11/29 00:22

ShowListメソッド内で書いていることを1行ずつコメントを書いてみてはいかがでしょうか。そうすれば自分で何を書いているのか分かると思います。(他の方もそうですが答えを書くのは簡単なのですが、それをすると課題の意味がないので・・・)
guest

回答2

0

ベストアンサー

(急募)よりは【ゆる募】とかの方が逆に回答しやすいです。
Javaに詳しくはないですが、見てみました。

内容をざっと見ながらインデント等を揃えましたが、特筆すべき問題は特に見受けられませんでした。
細かなエラーはたくさんあるようでした。
とりあえず下記としてみました。
コンパイルは通るようでした。

java

1// Main.java 2 3import java.sql.*; 4import java.util.*; 5 6class DataBase { 7 private String Host = "jdbc:mysql://localhost:3306/shoseki"; 8 private String User = "root"; 9 private String Pass = ""; 10 private Connection con; 11 12 public DataBase() throws ClassNotFoundException, SQLException { 13 this.con = createConnection(); 14 } 15 16 private Connection createConnection() throws ClassNotFoundException, SQLException { 17 Connection con = null; 18 try { 19 Class.forName("com.mysql.jdbc.Driver"); 20 con = DriverManager.getConnection(Host,User,Pass); 21 } catch(ClassNotFoundException e) { 22 // e.printStackTrace(); 23 throw e; 24 } catch(SQLException e) { 25 // e.printStackTrace(); 26 throw e; 27 } 28 return con; 29 } 30 31 private void close() throws SQLException { 32 try { 33 if (this.con != null) { 34 this.con.close(); 35 } 36 } catch(SQLException e) { 37 // e.printStackTrace(); 38 throw e; 39 } 40 } 41 42 public ResultSet search(String key, String value) throws SQLException { 43 String sql = "SELECT * FROM shoseki"; 44 if(key != "null") { 45 sql = sql.concat(" WHERE " + key + " LIKE " + "'%" + value + "%'"); 46 } 47 return sqlExec(sql); 48 } 49 50 private ResultSet sqlExec(String sql) throws SQLException { 51 Statement stmt = null; 52 ResultSet rs = null; 53 try { 54 stmt = con.createStatement(); 55 rs = stmt.executeQuery(sql); 56 } catch(SQLException e) { 57 // e.printStackTrace(); 58 throw e; 59 } 60 return rs; 61 } 62 63/* 64 private List<Shoseki> getResult(ResultSet rs) throws SQLException { 65 List<Shoseki> List = new ArrayList<>(); 66 while(rs.next()) { 67 Shoseki shoseki = new Shoseki(); 68 shoseki.setIsbn(rs.getString("isbn")); 69 shoseki.setTitle(rs.getString("title")); 70 shoseki.setAuthor(rs.getString("author")); 71 List.add(shoseki); 72 } 73 } 74*/ 75} 76 77class ShosekiManagementSystem { 78 79 private DataBase database; 80 81 public ShosekiManagementSystem() throws ClassNotFoundException, SQLException { 82 this.database = new DataBase(); 83 } 84 85 /** Create. */ 86 public void insert() { 87 88 } 89 90 /** Update. */ 91 public void update() { 92 93 } 94 95 /** Delete. */ 96 public void delete() { 97 98 } 99 100 /** Search. */ 101 public void search() throws SQLException, NumberFormatException, NoSuchElementException, IllegalStateException { 102 ResultSet rs; 103 String inputString; 104 int n; 105 106 while(true) { 107 // Menu Display 108 System.out.println("1.全件検索"); 109 System.out.println("2.ISBNから検索"); 110 System.out.println("3.書籍名から検索"); 111 System.out.println("4.著者から検索"); 112 System.out.println("9.戻る"); 113 System.out.println(""); 114 System.out.println("> "); 115 116 inputString = new java.util.Scanner(System.in).nextLine(); 117 n = Integer.parseInt(inputString); 118 119 // End Determination 120 if(n == 9) { 121 break; 122 } 123 124 // Menu Number Check 125 switch(n) { 126 case 1: 127 rs = this.database.search("null", "null"); 128 showList(rs); 129 break; 130 case 2: 131 System.out.println(""); 132 System.out.println("ISBN番号による検索"); 133 System.out.println(""); 134 System.out.println("ISBN番号 ↓ "); 135 136 inputString = new java.util.Scanner(System.in).nextLine(); 137 rs = this.database.search("isbn", inputString); 138 showList(rs); 139 break; 140 case 3: 141 System.out.println(""); 142 System.out.println("タイトルによる検索"); 143 System.out.println(""); 144 System.out.println("タイトル ↓ "); 145 146 inputString = new java.util.Scanner(System.in).nextLine(); 147 rs = this.database.search("title", inputString); 148 showList(rs); 149 break; 150 case 4: 151 System.out.println(""); 152 System.out.println("著者による検索"); 153 System.out.println(""); 154 System.out.println("著者 ↓ "); 155 156 inputString = new java.util.Scanner(System.in).nextLine(); 157 rs = this.database.search("author", inputString); 158 showList(rs); 159 break; 160 default: 161 // Do nothing. 162 } 163 } 164 } 165 166 private void showList(ResultSet rs) throws SQLException { 167 List<Shoseki> shosekiList = new ArrayList<>(); 168 while(rs.next()) { 169 Shoseki shoseki = new Shoseki(); 170 shoseki.setIsbn(rs.getString("isbn")); 171 shoseki.setTitle(rs.getString("title")); 172 shoseki.setAuthor(rs.getString("author")); 173 shosekiList.add(shoseki); 174 } 175 176 for(Shoseki shoseki : shosekiList) { 177 System.out.println("ISBN   :\t" + shoseki.getIsbn()); 178 System.out.println("タイトル :\t" + shoseki.getTitle()); 179 System.out.println("著者   :\t" + shoseki.getAuthor()); 180 } 181 } 182} 183 184/** 185 * This is a book. 186 */ 187class Shoseki { 188 /** ISBN. */ 189 private String isbn; 190 /** Book title. */ 191 private String title; 192 /** Book author. */ 193 private String author; 194 195 public String getIsbn() { 196 return this.isbn; 197 } 198 199 public void setIsbn(String isbn) { 200 this.isbn = isbn; 201 } 202 203 public String getTitle() { 204 return this.title; 205 } 206 207 public void setTitle(String title) { 208 this.title = title; 209 } 210 211 public String getAuthor() { 212 return this.author; 213 } 214 215 public void setAuthor(String author) { 216 this.author = author; 217 } 218 219 @Override 220 public String toString() { 221 String str = String.format("%s\n%s\n%s\n", 222 "ISBN   :\t" + this.isbn, 223 "タイトル :\t" + this.title, 224 "著者   :\t" + this.author 225 ); 226 return str; 227 } 228} 229 230public class Main { 231 public static void main(String[] args) throws Exception { 232 String inputString; 233 int n; 234 235 ShosekiManagementSystem sms = new ShosekiManagementSystem(); 236 237 while(true) { 238 // Menu Display 239 System.out.println("********************"); 240 System.out.println("**書籍データベース**"); 241 System.out.println("****操作メニュー****"); 242 System.out.println("********************"); 243 System.out.println("1.登録"); 244 System.out.println("2.検索"); 245 System.out.println("3.更新"); 246 System.out.println("4.削除"); 247 System.out.println("9.終了"); 248 System.out.println(""); 249 System.out.println("> "); 250 251 inputString = new java.util.Scanner(System.in).nextLine(); 252 n = Integer.parseInt(inputString); 253 254 // End Determination 255 if(n == 9) { 256 break; 257 } 258 259 // Menu Number Check 260 switch(n) { 261 case 1: 262 sms.insert(); 263 break; 264 case 2: 265 sms.search(); 266 break; 267 case 3: 268 sms.update(); 269 break; 270 case 4: 271 sms.delete(); 272 break; 273 default: 274 // Do nothing. 275 } 276 } 277 } 278}

投稿2017/11/29 00:47

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

コードをざっと見た感じ、以下のようなことがやりたいように見受けられます。

  1. 番号でやりたいことを分岐する
  2. やりたいことに合わせて必要な情報を入力する
  3. 情報をもとにDB.SearchでShosekiのListを作成する
  4. ShowListで先程のListを画面に表示する

コードを見る限り、ゲッターセッターの使い方はあっています。しかし、そもそも**「変数の使い方」を間違えています。**

Java

1// DataBase.java 2 private void SetResult(ResultSet rs) { 3 List List = new ArrayList(); // ←この変数はSetResultの中でしか存在しない 4 while(rs.next()) { 5 Shoseki shoseki = new Shoseki(); 6 shoseki.setIsbn(rs.getString("isbn")); 7 shoseki.setTitle(rs.getString("title")); 8 shoseki.setAuthor(rs.getString("author")); 9 List.add(shoseki); 10 } 11 }

まずDataBase#SetResultですが、ここで作成されているListという変数は、SetResultの中でしか存在しません。ShosekiManagementSystemでこのListを使ってfor文を処理しようとしていますが、そのListという変数は直前にShosekiクラスで定義したただ名前が同じなだけの変数です。存在自体は全く別のものです。例えばA町に住んでいる田中さんと、B町に住んでいる田中さんは、同じ名前であっても別人ですよね。
というかそもそもShosekiのデータをListから受け取る変数の名前がListなのがごっちゃになる原因です。

この問題を解決するには、DataBase#SetResultの戻り値としてListを受け取り、ShosekiManagementSystem#ShowResultに引数としてそのListを渡して、それをfor文で処理するべきです。

これ以上書くと正解をそのまま教えてしまうので、あとはこの説明を解釈して自分で直してください。

投稿2017/11/29 00:31

編集2017/11/29 00:32
masaya_ohashi

総合スコア9206

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問