- 締切済み
例外の文法について
失礼します。 JAVAを始めて約一ヶ月が経とうそしているのですが、表題にある例外の文法「try~catch」のところでご教授願いたいことがあります。 なにぶん初心者なのでテキストを見ながらとりあえずそのまま写して実行して動作確認して・・・という手法をとっていたのですが、下記の例題が実行できずに困っています。 どうしても途中の int number = Integer.parseInt(args[0]); の部分で止まってしまい、解決策が見つからず八方塞りです。 ぜひご教授願いますよう宜しくお願いいたします。 <例題> import java.io.*; public class Ren25 { public static void main(String args[]){ try{ int number = Integer.parseInt(args[0]); System.out.println(number); }catch(NumberFormatException e){ System.out.println("数字じゃないとダメです:"); } } }
- みんなの回答 (2)
- 専門家の回答
みんなの回答
Exception in thread"main"java.lang.ArrayIndexOutOfBoundsException: 0 at Ren25.main(Ren25.java:7) そのものずばり、int number = Integer.parseInt(args[0]);のところで配列がArrayIndexOutOfBoundsExceptionを送ってる、要するに「配列の要素数より大きい番号の要素にアクセスしようとしている」ということ。ここでは、args[0]を指定しているが、ゼロ番目の値はない、すなわち「引数がまったく渡されてない」ということ。先ほど書いたように、実行時に整数を引数に渡しているだろうか? きちんと渡していればこのエラーは出ない。 ERROR: JDWP Unable to get JNI 1.2 environment これは、コンパイル環境と実行環境のバージョンが異なる場合によく見る。java -versionと、javac -versionをそれぞれ実行してみて、両方のバージョンが同じか確認する。違っていたら、Javaコントロールパネルの「Java」タブで、Javaアプリケーションのランタイム設定のバージョンを同じものにそろえる。
こういう場合は、「止まってしまい……」じゃなくて、発生したエラーメッセージをコピー&ペーストして掲載するように心がけたほうがいい。 で、問題だが。単に、引数に整数を渡してないからじゃないのか。 java Ren25 10 というように整数の値を渡して実行すればいいだけと思うが。
補足
大変失礼致しました。 エラーメッセージは「Exception in thread "main"java.lang.ArrayIndexOutOfBoundsException: 0 at Ren25.main(Ren25.java:7)」 とこのように出てきます。 あと度々 「ERROR: JDWP Unable to get JNI 1.2 environment, jvm->GetEnv() return code = -2 JDWP exit error AGENT_ERROR_NO_JNI_ENV(183): [../../../src/share/back/util.c:820] 」 といった表示も出てきています。 こちらもご教授願えるとありがたいです。 併せて宜しくお願いします。