こんにちは、shinoです。毎日ボチボチプログラミングをしながら生活しています。その中での技術・エラーなどの紹介をしています。
今回は、Javaのエラーを紹介していきます。Javaを初めて使う方向けに書いてみます。私もこの記事を書いている時から始めています。ここから少しずつ学んで行こうかと思っているところでございます。
エラー内容
Ljava.lang.String;@とコンソールに出力されます。
配列の中身を表示させたいと考えています。
どんなタイミングか
こんなコードを書いていました。以下のコードでエラーが出ます。
何が原因かわかりますか?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
public class Main { public static void main(String[] args) { StringBuilder st1 = new StringBuilder(); for(int i = 0; i < 10; i++) { st1.append(i+1).append(","); } System.out.println(st1); String st2 = st1.toString(); System.out.println(st2); String[] st3 = st2.split(","); System.out.println(st3); } } |
1 2 3 4 |
//出力内容 1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10, [Ljava.lang.String;@5d22bbb7 |
やりたいこととしては、for文で文字列を作成して、配列に挿入しようとしています。
どのように表示されるかを確認するために作成しています。
対応策
原因は分かりましたか?
対応は簡単です。
また、配列を正しく出力するために、修正しています。
importの追加とArrays.toStringを設定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import java.util.Arrays; public class Main { public static void main(String[] args) { StringBuilder st1 = new StringBuilder(); for(int i = 0; i < 10; i++) { st1.append(i+1).append(","); } System.out.println(st1); String st2 = st1.toString(); System.out.println(st2); String[] st3 = st2.split(","); System.out.println(Arrays.toString(st3)); } } |
1 2 3 4 |
//出力内容 1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] |
これで正常に出力されるようになりました。
おまけ
二次元配列はどうするかも見てみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
import java.util.Arrays; public class Main { public static void main(String[] args) { StringBuilder st1 = new StringBuilder(); for(int i = 0; i < 10; i++) { st1.append(i+1).append(","); } System.out.println(st1); String st2 = st1.toString(); System.out.println(st2); String[] st3 = st2.split(","); System.out.println(Arrays.toString(st3)); String[][] st4 = {{"a","b"},{"c","d"}}; System.out.println(Arrays.toString(st4)); } } |
1 2 3 4 5 |
//出力内容 1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] [[Ljava.lang.String;@5d22bbb7, [Ljava.lang.String;@41a4555e] |
2次元配列は、同じように設定しても解決できなそうです。
解決策としては、以下の通りです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
import java.util.Arrays; public class Main { public static void main(String[] args) { StringBuilder st1 = new StringBuilder(); for(int i = 0; i < 10; i++) { st1.append(i+1).append(","); } System.out.println(st1); String st2 = st1.toString(); System.out.println(st2); String[] st3 = st2.split(","); System.out.println(Arrays.toString(st3)); String[][] st4 = {{"a","b"},{"c","d"}}; System.out.println(Arrays.deepToString(st4)); } } |
1 2 3 4 5 |
//出力内容 1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] [[a, b], [c, d]] |
これで2次元配列についても出力されるようになりました。
まとめ
配列の出力は「Arrays.toString()」を設定します。
ちなみに、2次元配列については、「Arrays.deepToString()」を設定します。
以上のものを設定することで出力できるようになりました。
最後に
お疲れ様です。エラーは解決できたでしょうか?
他にもエラー情報等も掲載してあるので読んでみて下さい。
解決できなければ、Java公式を確認してみるのもいいと思います。
ひと休憩の際におすすめ記事は「Exception in thread “main”のエラー解決法」です。時間があれば読んでみて下さい。
コメント