この電卓のプログラムの処理内容を詳しく教えてください。
下記のプログラムで} else { if (is_enzan(str)) {部分から最後までの処理内容が分かりません。is_EnzanメソッドとparseEnzanメソッドの用途も分かりません。よろしくお願いします。
LuiS0616さん、回答ありがとうございます。編集させていただきました。
このプログラムは自分で作成したものでは無くググってると出てきたものです。
処理内容の理解を試みて
} else if ("演算子".equals(msg)) {
enzan = parseEnzan(str);
msg = "数値又は演算子";
の部分までは分かるのですが、次になぜ}else{が出てきて
その次にif~elseが出てきて
if (is_enzan(str)) {
enzan = parseEnzan(str);
} else {
num = Integer.parseInt(str);
}
msg = "数値又は演算子";
}
とコーディングしなければならないのか?が分かりません。
あとこのif ((str.length() != 1) || ("+-*/".indexOf(str) == -1))の処理内容が分かりません。教えて頂けませんか?
public class Dentaku { public static void main(String[] args) throws IOException{ int num = 0; String enzan = ""; String value = ""; String msg = "数値"; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); while(true){ System.out.println("現在の値:" + num); System.out.println("演算子:" + enzan); System.out.println("入力された値:" + value); System.out.print(msg + "を入力してください >>"); String str = br.readLine(); System.out.println(""); if ("q".equals(str)) { break; // ループの終了 } try { if ("数値".equals(msg)) { num = Integer.parseInt(str); msg = "演算子"; } else if ("演算子".equals(msg)) { enzan = parseEnzan(str); msg = "数値又は演算子"; } else { if (is_enzan(str)) { enzan = parseEnzan(str); } else { num = Integer.parseInt(str); } msg = "数値又は演算子"; } } catch(Exception ex) { System.out.println("# ---- エラー: " + msg + "ではありません。\n"); } } } // str が演算子か否かをチェックする。 static boolean is_enzan(String str) { if ((str.length() != 1) || ("+-*/".indexOf(str) == -1)) { return false; } return true; } // 演算子を処理する。 // str が演算子でなければ、例外が発生する。 static String parseEnzan(String str) throws IllegalArgumentException { if (is_enzan(str) == false) { throw new IllegalArgumentException("演算子でありません。"); } return str; } }