LoginSignup
shun03
@shun03

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Javaの演算方法について

解決したいこと

Javaで演算毎にメソッドを分けるようにし、指定された計算のみを行うようにしたいです。
例としまして、
エクリプス>実行の構成>引数>プログラムの引数で、
11+7と入力すれば
11+7=18

11-7と入力すれば
11-7=4
と、1つずつ出力されるようにしたいです。

現状ではメインクラスを実行すると、
足し算と引き算の計算が表示されて1つのみの計算表示が出ない状態で、
さらに演算子も統一されております。
解決方法を教えてください。

発生している問題

11+7=18
11+7=4

該当するソースコード

import com.lupinus_ltd.Calc;

public class kadai4 {


    public static void main(String[]args) {

        int operand1 = Integer.parseInt(args[0]);
        String operator = args[1];
        int operand2 = Integer.parseInt(args[2]);

        Calc c = new Calc();
        c.add(operand1,operand2,operator);
        c.sub(operand1,operand2,operator);



    }
}


package com.lupinus_ltd;

public class Calc {

    private int total;

    public void add(int operand1,int operand2,String operator) {
        System.out.println(operand1 + operator + operand2 + "=" + (operand1 + operand2));
    }

    public void sub(int operand1, int operand2, String operator) {
        System.out.println(operand1 + operator + operand2 + "=" + (operand1 - operand2));

    }
}
0

2Answer

addメソッド、subメソッド内で演算子が決まっているのであれば、operatorで条件分岐して呼び出すメソッドを振り分ければいいと思います。

kadai4.java

Calc c = new Calc();
if(operator.equals("+")){
    c.add(operand1,operand2);
}else if(operator.equals("-")){
    c.sub(operand1,operand2);
}
Calc.java
public void add(int operand1,int operand2) {
    System.out.println(operand1 + "+" + operand2 + "=" + (operand1 + operand2));
}

public void sub(int operand1, int operand2) {
    System.out.println(operand1 + "-" + operand2 + "=" + (operand1 - operand2));
}
1

Comments

  1. @shun03

    Questioner
    ご回答ありがとうございます。

    >addメソッド、subメソッド内で演算子が決まっているのであれば、operatorで条件分岐して呼び出すメソッドを振り分ければいいと思います。

    上記を考えながらソースを書きましたら上手くできました。
    ありがとうございます。また何かありましたらよろしくお願いします。

一応ですが、
プログラムの引数が"11+7"や"11-7"のように、単一パラメータの場合のサンプル

public class Sample {
    public static void main(String[] args) {
        String val = args[0];

        String operator = null;
        int operand1 = 0;
        int operand2 = 0;
        int total = 0;
        int index = 0;

        index = val.indexOf("+");
        if (index != -1) {
            operator = "+";
            operand1 = Integer.parseInt(val.substring(0, index));
            operand2 = Integer.parseInt(val.substring(index + 1));
            total = operand1 + operand2;
        }

        index = val.indexOf("-");
        if (index != -1) {
            operator = "-";
            operand1 = Integer.parseInt(val.substring(0, index));
            operand2 = Integer.parseInt(val.substring(index + 1));
            total = operand1 - operand2;
        }

        if(operator != null){
            System.out.printf("%d%s%d=%d", operand1, operator, operand2, total).println();
        }
    }
}
1

Comments

  1. @shun03

    Questioner
    ご回答ありがとうございます。
    単一パラメータも分かりませんでしたので、勉強になりました。
    ありがとうございます。

Your answer might help someone💌