設計書に沿ってJavaでコードを書いてみましょう。
この、コードサンプルでは、あえて処理をメソッドに分けていません。
少なくとも、割算の処理と掛算の処理は別メソッドを呼び出した方がよいかもしれません。
このソースはJavaDocが出力できるようにコメントを付けています。
JavaDocとは、Javaのソースコードより出力することができるドキュメントのことで、コメントをJavaDocのルールに沿って書いておけば、JDKでJavaDocのを出力することが可能となります。
皆さん、JavaのAPIマニュアルを見たことがあるでしょうか?
Java APIマニュアルもJavaDocとして出力されたものです。
package com.okapiproject.javatraining.calculator;
/**
* 再算と引算演算子だけで、割算または、
* 掛算を行うことができる計算機プログラムです。
* 「x」、「式」、「y」を受け取り、
* 式にあわせた計算を行い、答を表示します。
* このクラスはメイン関数からコンストラクタを呼び出しています。
* これにより、このクラスは new して使用することもできます。
*
* @author K.Takimoto
* @version 1.0
*/
public class Keisan01 {
/**
* 文字列の配列が受け取れるコンストラクタです。
* 「x」、「式」、「y」を文字列の配列で受け取り、
* 配列の個数をチェックした後、「x」、
* 「y」は数値に変換します。
* 「式」にあわせて割算または、掛算を行いますが、
* 不正な式はエラーとなります。
* @param args x、数式およびyの文字配列(String[])
*/
public Keisan01(String[] args) {
//引数の数をチェックします。
if (args.length != 3) {
System.out.println("引数の数は3つでなければいけません");
return;
}
//xを数値に変換します。
int x = 0;
try {
x = Integer.parseInt(args[0]);
} catch (NumberFormatException e) {
System.out.println("xが数値ではありません");
return;
}
//yを数値に変換します。
int y = 0;
try {
y = Integer.parseInt(args[2]);
} catch (NumberFormatException e) {
System.out.println("yが数値ではありません");
return;
}
if (args[1].equals("÷")) {
if (y == 0) {
System.out.println("0での割り算はできません");
return;
}
// 商、余りの変数を初期化します
int syou;
int amari = x;
// 商、余りの計算を行います
for (syou = 0; y <= amari; syou++) {
amari = amari - y;
}
//計算結果を出力します
System.out.println(x + "÷" + y + " = " + syou);
return;
} else if (args[1].equals("×")) {
// 乗の変数を初期化します
int jyou=0;
// 乗の計算を行います
for (int i = 0; i < y; i++) {
jyou = jyou + x;
}
//計算結果を出力します
System.out.println(x + "×" + y + " = " + jyou);
return;
} else {
System.out.println("数式は正しくありません。");
return;
}
}
public static void main(String[] args) {
new Keisan01(args);
}
}