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

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

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

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

Q&A

解決済

1回答

3185閲覧

コマンドライン引数を用いた名前と性別を表示するプログラム (boolean型)

tapipi

総合スコア13

Java

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

0グッド

0クリップ

投稿2020/04/17 11:43

編集2020/04/21 09:15

前提・実現したいこと

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文のところです。

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

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

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

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

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

m.ts10806

2020/04/17 11:45

分岐してどうしたいんでしょう。 ゴールを明示されないことには答えようがありません。
tapipi

2020/04/17 11:53

分岐して、 コマンドライン引数、args[1]がMのときは 氏名: ~~ 性別:男性 args[2]のFときは 氏名: ~~ 性別:女性 何もない場合、args[1]にM,F以外があるばあい コマンドラインで、氏名と性別を引き渡してください。 と表示させたいです。
m.ts10806

2020/04/17 11:54

質問を編集して追記してください。 それに、それだけならいちいち変数受け取らなくてもできるように思いますが、 まず思ったように組んでください。 条件分岐、変数の基本です。
m.ts10806

2020/04/17 11:56

>[1]にMまたはFが入っています。 というのでしたら「M,F以外がある場合」を考慮する必要があるのでしょうか。 要件をもっときちんと整理してロジックを考えた方が良いです。 考えてから組みましょう。組みながら考えるのは非効率ですし、余計分からなくなります。
tapipi

2020/04/17 12:03

ご丁寧にありがとうございます。 ロジックを考えてから、 組みなおしてみます。 差し支えなければ、 ロジックを組むときに意識していることなどあれば 教えていただけないでしょうか。
m.ts10806

2020/04/17 12:08

既に書きました。 >要件をもっときちんと整理して
kazuma-s

2020/04/17 15:14

public static void main(String[] args) {    public static void main(String[] args) { なんじゃ、これ? main の中に main があるなんて。説明をお願いします。
LouiS0616

2020/04/20 23:35

> 解決したので編集しました。 なぜですか?
guest

回答1

0

ベストアンサー

なんか回答後に質問文が編集されてたけど

boolean isMan = isMan(args[1]);の使い方を理解したい。

コマンドライン引数が0の時エラーが表示されないようにしたい。

boolean isMan = isMan(args[1])を使ってないのがご不満だったんだろうか。

「使い方を理解」の部分が、逆に今どう理解できないのかわからないけど、とりあえずその仕様を満たすなら

Java

1import java.util.*; 2 3public class Main { 4 public static void main(String[] args) { 5 // 引数が2つ指定されてない、もしくは第二引数が"M"か"F"以外の場合はメッセージをだして終わる。 6 // これで「コマンドライン引数が0の時エラーが表示されない」ようになる。 7 if (args.length != 2 || (!args[1].equals("M") && !args[1].equals("F"))) { 8 System.out.println("コマンドラインで、氏名と性別を引き渡してください。"); 9 return; 10 } 11 12 String name = args[0]; 13 boolean isMan = isMan(args[1]); // こうしないとダメってこと? 14 // (isMan ? "男性" : "女性")でisMan = trueなら"男性"、それ以外は"女性"と表示 15 System.out.println("氏名:" + name + "、性別:" + (isMan ? "男性" : "女性")); 16 } 17 18 public static boolean isMan(String isMan) { 19 return isMan.equals("M"); 20 } 21}

投稿2020/04/17 12:16

編集2020/04/17 14:06
gentaro

総合スコア8947

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問