前提・実現したいこと
javaでboolean型を使いコマンドラインから名前と性別を受け取り、
名前と性別を表示するプログラムを作成したいです。
コマンドライン引数には,
args[0]に氏名、[1]にMまたはFが入っています。
【したい事】
boolean isMan = isMan(args[1]);の使い方を理解したい。
コマンドライン引数が0の時エラーが表示されないようにしたい。
該当のソースコード
java
1 public static void main(String[] args) { 2 //コマンドライン引数args[1]がMまたはFかどうが判別 3 if(args[1].equals("M") || args[1].equals("F")) { 4 5 //String型のargs[1]を引数とする 6 boolean isMan = isMan(args[1]); 7 //入れ子で場合分け 8 if(args[1].equals("M") ) { 9 out.println("氏名:" + args[0] + "、性別:" + "男性"); 10 // args[1]がMまたはF以外の場合、エラー表示 11 }else { 12 out.println("氏名:" + args[0] + "、性別:" + "女性"); 13 } 14 }else { 15 out.println("コマンドラインで、氏名と性別を引き渡してください。"); 16 } 17 } 18 //真偽値を返すisManメソッド(引数Stringに対して、戻り値true,falseを返す) 19 public static boolean isMan(String isMan) { 20 return isMan.equals("M"); 21 }
試したこと
コマンドライン引数が0の時、最初のif条件が原因でエラーが表示される。
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at check.java.Test11.main(Test11.java:14)
※14行目は最初のif文のところです。
分岐してどうしたいんでしょう。
ゴールを明示されないことには答えようがありません。
分岐して、
コマンドライン引数、args[1]がMのときは
氏名: ~~ 性別:男性
args[2]のFときは
氏名: ~~ 性別:女性
何もない場合、args[1]にM,F以外があるばあい
コマンドラインで、氏名と性別を引き渡してください。
と表示させたいです。
質問を編集して追記してください。
それに、それだけならいちいち変数受け取らなくてもできるように思いますが、
まず思ったように組んでください。
条件分岐、変数の基本です。
>[1]にMまたはFが入っています。
というのでしたら「M,F以外がある場合」を考慮する必要があるのでしょうか。
要件をもっときちんと整理してロジックを考えた方が良いです。
考えてから組みましょう。組みながら考えるのは非効率ですし、余計分からなくなります。
ご丁寧にありがとうございます。
ロジックを考えてから、
組みなおしてみます。
差し支えなければ、
ロジックを組むときに意識していることなどあれば
教えていただけないでしょうか。
既に書きました。
>要件をもっときちんと整理して
public static void main(String[] args) {
public static void main(String[] args) {
なんじゃ、これ?
main の中に main があるなんて。説明をお願いします。
> 解決したので編集しました。
なぜですか?
回答1件
あなたの回答
tips
プレビュー