演算子のチェック

広告

次に入力された2番目の引数である演算子が"kake"、"waru"、"tasu"、"hiku"のどれかであるかをチェックして、違っていたら使い方を再度表示してプログラムを終了させてみます。

class dentaku2{
  public static void main(String args[]){
    int val1 = 0;  /* 最初の数字 */
    int val2 = 0;  /* 次の数字 */
    String ope;    /* 演算子 */

    if (args.length != 3){
      System.out.println("Usage : java dentaku 数値 演算子 数値");
      System.out.println("演算子は kake waru tasu hiku の4つです");
      System.exit(0);  /* プログラムを終了する */
    }

    val1 = Integer.parseInt(args[0]);
    val2 = Integer.parseInt(args[2]);
    ope = args[1];

    boolean errFlag = true;

    if (ope.equals("kake")){
      errFlag = false;
    }

    if (ope.equals("waru")){
      errFlag = false;
    }

    if (ope.equals("tasu")){
      errFlag = false;
    }

    if (ope.equals("hiku")){
      errFlag = false;
    }

    if (errFlag == true){
      System.out.println("演算子は kake waru tasu hiku の4つです");
      System.exit(0);  /* プログラムを終了する */
    }

    System.out.println("入力された式は " + val1 + " " + ope + " " + val2 + " です");
  }
}

演算子のチェックの仕方は色々考えられますが、一番分かりやすい書き方をしてみました。if文をまとめてしまって下記のように記述してもいいかと思います。

boolean errFlag = false;

if (!ope.equals("kake")){
  if (!ope.equals("waru")){
    if (!ope.equals("tasu")){
      if (!ope.equals("hiku")){
        errFlag = true;
      }
    }
  }
}

if (errFlag == true){
  System.out.println("演算子は kake waru tasu hiku の4つです");
  System.exit(0);  /* プログラムを終了する */
}

又はif文の条件式の中にまとめて記述してしまう手もあります。

boolean errFlag = true;

if (ope.equals("kake") || ope.equals("waru") || ope.equals("tasu") || ope.equals("hiku")){
  errFlag = false;
}

if (errFlag == true){
  System.out.println("演算子は kake waru tasu hiku の4つです");
  System.exit(0);  /* プログラムを終了する */
}

上記の場合はif文の中でどれかの文字列比較が正しかった場合にはエラーでは無いということになります。

又は配列を使って下記のように記述してもいいです。

String opeStr[] = {"kake", "waru", "tasu", "hiku"};

boolean errFlag = true;

for (int i = 0 ; i < 4 ; i++){
  if (ope.equals(opeStr[i])){
    errFlag = false;
  }
}

if (errFlag == true){
  System.out.println("演算子は kake waru tasu hiku の4つです");
  System.exit(0);  /* プログラムを終了する */
}

サンプル

今回は最後の配列を使う方法を使ってみましょう。

dentaku2.java

class dentaku2{
  public static void main(String args[]){
    int val1 = 0;  /* 最初の数字 */
    int val2 = 0;  /* 次の数字 */
    String ope;    /* 演算子 */

    if (args.length != 3){
      System.out.println("Usage : java dentaku 数値 演算子 数値");
      System.out.println("演算子は kake waru tasu hiku の4つです");
      System.exit(0);  /* プログラムを終了する */
    }

    val1 = Integer.parseInt(args[0]);
    val2 = Integer.parseInt(args[2]);
    ope = args[1];

    String opeStr[] = {"kake", "waru", "tasu", "hiku"};
    boolean errFlag = true;

    for (int i = 0 ; i < 4 ; i++){
      if (ope.equals(opeStr[i])){
        errFlag = false;
      }
    }

    if (errFlag == true){
      System.out.println("演算子は kake waru tasu hiku の4つです");
      System.exit(0);  /* プログラムを終了する */
    }

    System.out.println("入力された式は " + val1 + " " + ope + " " + val2 + " です");
  }
}

実行結果は下記のようになります。

p2

次は数値のチェックを行います。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)