• ベストアンサー

起動引数の表示

Java勉強中の初心者です。 起動引数の表示について お尋ねしたいことがあります。 起動引数が入力された場合には そのまま表示、無い場合は ”起動引数無し” と表示させたいのですが 下記のソースだと java.lang.ArrayIndexOutOfBoundsException のエラーが発生してしまいます。 このような場合はどのようにしたら よいのですか? よろしくお願いします。 ---------------------------------------------- public class Ren1 { public static void main(String args[]) { if(args[0].equals(null)){ System.out.println("起動引数無し"); } String s = args[0]; System.out.println(s); } }

質問者が選んだベストアンサー

  • ベストアンサー
  • kscKane
  • ベストアンサー率62% (18/29)
回答No.3

if文の意味は、 「もし条件が真ならば、後に続く一文、または{}でくくられたブロックの処理を実行する」 だけです。 「処理を実行して終了する」 ではありません。 if文に続く部分の処理を実行した後も、書かれている処理は続きます。 修正方法としては二つあると思います。 1.起動引数が無いと判断したif文の中で、明示的にプログラムを抜ける。 これはif文の中でreturnを記述すれば可能です。 2.起動引数の処理を行う部分は、最初のif文に入らなかったときだけ通るようにする。 elseを使って実現できますね。 個人的には1のやり方のほうがわかりやすいかな、と思います。

その他の回答 (3)

  • kscKane
  • ベストアンサー率62% (18/29)
回答No.4

#3で誤解を招きそうな表現が(汗) >これはif文の中でreturnを記述すれば可能です。 if文に続くブロックの中で、に訂正します。 推敲はしっかりしなきゃ自分(汗)

  • kscKane
  • ベストアンサー率62% (18/29)
回答No.2

引数がない、すなわち配列が空の時にも配列の最初の要素を見に行ってしまっています。 配列が空と判断した時点でプログラムを抜けるべきでしょう。

camp-fanks
質問者

補足

>配列が空と判断した時点でプログラムを抜けるべきでしょう。 最初のif文で起動引数が無いので"ture"となり、最初の出力文の "起動引数無し"が出力されました。 この地点でプログラムは抜けていないのですか? String s = args[0]; この処理を行って、起動引数が無いためにエラーが 発生しているということですよね? プログラムを抜けるためには”}”の位置だと思うのですが わかりません。 ご教授お願いできますか?

  • bgbg
  • ベストアンサー率53% (94/175)
回答No.1

引数の数はargsの要素数になります。 argsは普通の配列なので、args.lengthで要素数を調べられます。 ifの部分を if(args.length == 0) とすればいいでしょう。

camp-fanks
質問者

補足

早速のご回答ありがとうございます。 私のミスでもう少し詳しく質問を 書けばよかったです。 -------------------------------------------- public class Ren1 { public static void main(String args[]) { if(args.length == 0){ System.out.println("起動引数無し"); } String s = args[0]; int n = Integer.parseInt(s); if(n >= 0){ System.out.println(s); }else if(n <= 0){ int n2 = n * (-1); System.out.println(n2); } } } ----------------------------------------------------- 起動引数が無い場合、 >String s = args[0]; で java.lang.ArrayIndexOutOfBoundsException エラーが発生しています。 このエラーを無くすためにはどのようにしたら よろしいですか? よろしくお願いします。