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

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

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

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

Q&A

解決済

1回答

2966閲覧

JavaのStackOverFlowのエラーで、sun.nio.~や、io.~といったエラーが発生しています。

kinesin_lks

総合スコア8

Java

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

0グッド

0クリップ

投稿2017/08/13 15:25

編集2017/08/13 15:31

JavaのStackOverFlowについての質問です。
javaの再帰処理をしている際に、StackOverFlowErrorが出たのですが、
そのエラーの中に、以下のようなものがありました。(Searchが再帰処理の関数です。)

###実現したいこと
エラーの意味していることを理解することと、このエラーの解決

###発生している問題・エラーメッセージ
ここで、sun.nio.~や、io.~といったエラーが発生しています。

Exception in thread "main" java.lang.StackOverflowError at sun.nio.cs.UTF_8.updatePositions(UTF_8.java:77) at sun.nio.cs.UTF_8.access$200(UTF_8.java:57) at sun.nio.cs.UTF_8$Encoder.encodeArrayLoop(UTF_8.java:636) at sun.nio.cs.UTF_8$Encoder.encodeLoop(UTF_8.java:691) at java.nio.charset.CharsetEncoder.encode(CharsetEncoder.java:579) at sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:271) at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:125) at java.io.OutputStreamWriter.write(OutputStreamWriter.java:207) at java.io.BufferedWriter.flushBuffer(BufferedWriter.java:129) at java.io.PrintStream.write(PrintStream.java:526) at java.io.PrintStream.print(PrintStream.java:669) at java.io.PrintStream.println(PrintStream.java:806) at Main.Search(Main.java:51)

###試したこと
とりあえず、sun.nio.~や、io.といったエラーについてGoogle大先生に聞いてみましたが、
よくわからず、
io
があったのでioパッケージをimportするのをやめて、utilのscannerを使うようにシテみたのですが、改善しませんでした。

###補足情報(言語/FW/ツール等のバージョンなど)
言語:Java
ツール:paiza io
(https://paiza.io/projects/new)

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

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

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

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

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

guest

回答1

0

ベストアンサー

sun.nio.~や、io.~というのはエラーではなく、エラーが発生した箇所を示しています。
エラーそのものは1行目に記されているjava.lang.StackOverflowErrorです。
再帰処理をしている最中とのことでしたが、再帰回数が多くなりすぎるとメソッドの呼び出し順を記憶するスタックの空きがなくなります。これはそのことによるエラーです。
エラーの内容を出しているこれらのメッセージをスタックトレースと呼び、エラーが発生するまでにたどったメソッドの順を記憶しているものです。しかし、この程度のスタックでこのエラーが発生するとは思えないので、本当はこの下にずっとat Main.Search(Main.java:51)が繰り返されているのではないですか?そうであるなら、Searchメソッドの再帰の終了条件などを見直してください。

投稿2017/08/13 15:42

swordone

総合スコア20651

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

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

kinesin_lks

2017/08/17 11:00

swordoneさんの仰る通り再帰処理がまずかったようで、 データによっては再帰回数が多くなりすぎてしまっているようでした。 もっといい処理を考えなくては…… swordoneさん、ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問