コマンドライン引数で入力した文字の有無を判断する
研修で取り組み、自力で解けなかった問題への理解を深めるための記事です。
そのため、この記事はJavaについてのみとなります。
サイトや教材を参考にした上で記述していますが、誤っている点がある場合は指摘いただきますと幸いです。
引数やコマンドライン引数については前記事で解説済みなのでそちらを参照してください
***
練習問題
以下文字配列を作成します
>ねこ、いぬ、うさぎ、パンダ、オオカミ
コマンドライン引数から、引数に動物を1匹指定し、あるかないかを表示する
表示はmainメソッドで行い、判断は別のメソッドで行うこと
上記の問題に対して、一つずつ解説をしていきます。
文字列の作成
String animal = {"ねこ","いぬ","うさぎ","パンダ","オオカミ"};
まず一文目で、この問題で使われる配列の作成をしました
コマンドライン引数のチェック
if(args.length != 1){
System.out.println("動物を1匹入力してください");
return;
}
入力される値の数をチェックします。
!=:左右が違う値の時
この演算子を使って、動物が1匹だけ入力されたかを確認します。0匹,2匹以上の場合は動物を入力するよう促す文章を作成しました。
1匹だけの場合は表示されません。
別メソッドを作り判断する
public static String judgment(String animal,String oneanimal){
String msg = oneanimal + "はいません";
for(int i = 0;i<animal.length;i++){
if(animal[i].equals(oneanimal)){
msg = oneanimal + "がいました";
break;
}
}
return msg;
}
個人的に一番苦労した箇所でした。
for文とif文を挟み、入力した動物(oneanimal)が配列の動物と同じかを比較していきます。動物の名前は文字型なので、"=="ではなく".equals"を使います。
判断メソッドの結果を表示させる
まず一文目で表示させる文章を設定します。(>String msg =)
ここの段階で、もし一致する動物がなかった場合にいないことを知らせる文章を作ります。
そして上記で書いたfor文とif文を挟み、もし一致する動物がいた場合はmsgを更新します。
全処理が終わったところでreturn文で元のメソッドに返します。(return)
System.out.println(judgment(animal,args[0]));
returnで戻ってきた処理を表示して終わりです。
コード一覧
クラス名省略
public static void main(String args){
String animal = {"ねこ","いぬ","うさぎ","パンダ","オオカミ"};
if(args.length != 1){
System.out.println("動物を1匹入力してください");
return;
}
System.out.println(judgment(animal,args[0]));
}
public static String judgment(String[] animal,String oneanimal){
String msg = oneanimal + "はいません";
for(int i = 0;i<animal.length;i++){
if(animal[i].equals(oneanimal)){
msg = oneanimal + "がいました";
break;
}
}
return msg;
}