🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Java

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

Q&A

解決済

1回答

2658閲覧

二次元配列List→配列の変換時のエラーArrayStoreException

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

0グッド

0クリップ

投稿2019/11/07 05:29

SQL文を引数にしてDBから受け取った3*10行のデータを二次元配列に格納し出力する問題を解いています。
メソッドの返り値はString[][]が指定されていて、listに格納し、配列に変換する際に表題のエラーが出てしまいます。

取得したデータをlistに入れる
→二次元listsにlistを入れる
→listを配列に変換
→nextで最後の行まで繰り返す
→二次元listsを配列に変換 

という流れでやってみようと考えています。

よろしくお願いします。

発生している問題・エラーメッセージ

Exception in thread "main" java.lang.ArrayStoreException at java.lang.System.arraycopy(Native Method) at java.util.ArrayList.toArray(ArrayList.java:412) at studyb.B14_DBAccess.selectExec(B14_DBAccess.java:108) at studyb.B14_exec.main(B14_exec.java:25)

DBAccess.java

import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; public String[][] selectExec(String sql){ ArrayList<ArrayList<String>> lists = new ArrayList<ArrayList<String>>(); try { conn = DriverManager.getConnection(url, user, password); Statement st = conn.createStatement(); ResultSet rs = st.executeQuery(sql); while(rs.next()) { ArrayList<String> list = new ArrayList<>(); list.add(rs.getString("TESTNO")); list.add(rs.getString("NAME")); list.add(rs.getString("KANA")); lists.add(list); list.toArray(new String[list.size()]); } } catch(SQLException e) { e.printStackTrace(); } String[][] arrays = lists.toArray(new String[lists.size()][]); return arrays; }

exec.java

public class B14_exec { public static void main(String[] args) { B14_DBAccess dba = new B14_DBAccess(); dba.connect(); String sql = "select * from TESTTABLE1"; String[][] arrays = dba.selectExec(sql); for(int i=0; i<arrays.length; i++) { for(int j=0; j<arrays[0].length; j++) { System.out.print(arrays[i][j] + "\t"); } System.out.print("\n"); } dba.disconnect(); } }

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

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

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

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

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

guest

回答1

0

ベストアンサー

ArrayList<ArrayList<String>> lists = new ArrayList<ArrayList<String>>(); ↓↓↓ ArrayList<String[]> lists = new ArrayList<>();
lists.add(list); list.toArray(new String[list.size()]); ↓↓↓ lists.add(list.toArray(new String[list.size()]));

投稿2019/11/07 05:44

tetutetu

総合スコア419

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

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

退会済みユーザー

退会済みユーザー

2019/11/07 05:51

動きました! 宣言の仕方がそもそも違ったのですね・・・ あるサイトを参考にしたのですが; 助かりましたm(__)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問