Javaの計算関係
解決したいこと
Javaで、以下のように6つの演算があり、
kadai.javaの引数に数値と演算子を入力して出力することによって
計算がされるコードを書いておりましたが、
乗算、除算、累乗が想定していた結果と違っております。
解決方法がありましたらお願いします。
発生している問題
// 乗算
現状:入力値が正しくありません
理想:11*7=77.0
//除算
現状:11/7=1.0
理想:11/7=1.5714285714285714
//累乗
現状:11/7=.0
理想:11/7=19487171.0
該当するソースコード
Calc.java
package com.lupinus_ltd;
public class Calc {
private int total;
public Calc () {
init();
}
public void add(int operand1,int operand2) {
total = operand1 + operand2;
}
public void sub(int operand1,int operand2) {
total = operand1 - operand2;
}
public void multi(int operand1,int operand2) {
total = operand1 * operand2;
}
public void div(int operand1,int operand2) {
total = operand1 / operand2;
}
public void mod(int operand1,int operand2) {
total = operand1 % operand2;
}
public void pow(int operand1,int operand2) {
int count = 1;
for (int i = 0; i < operand2; i++) {
count =count * operand1;
}
}
public int getTotal() {
return total;
}
public void init() {
total = 0;
}
}
kadai.java
import java.math.BigDecimal;
import java.text.DecimalFormat;
import com.lupinus_ltd.Calc;
public class kadai4 {
public static void main(String[]args) {
Calc c = new Calc();
try {
int operand1 = Integer.parseInt(args[0]);
String operator = args[1];
int operand2 = Integer.parseInt(args[2]);
switch(operator) {
case "+":
c.add(operand1,operand2);
break;
case "-":
c.sub(operand1,operand2);
break;
case "*":
c.multi(operand1,operand2);
break;
case "/":
c.div(operand1,operand2);
break;
case "%":
c.mod(operand1,operand2);
break;
case "^":
c.pow(operand1,operand2);
break;
}
BigDecimal total = BigDecimal.valueOf(c.getTotal());
if(total.scale() == 0) {
DecimalFormat format = new DecimalFormat("#.0");
System.out.println(operand1 + "" + operator + "" + operand2 + "=" + format.format(total));
} else {
System.out.println(operand1 + operator + operand2 + "=" + total.toPlainString());
}
}catch(NumberFormatException e) {
System.out.println("入力値が正しくありません");
}
}
}
自分で試したこと
1、2時間ほど検索やコードを書き、乗算の演算子(*)をコピペしたり除算に(double)を入れてみたり
累乗計算するためのfor文を見直したりしましたが、現状から変わりませんでした。