-8
public class Calculator {
        Double x;
        /*
        * Chops up input on ' ' then decides whether to add or multiply.
        * If the string does not contain a valid format returns null.
        */
        public Double x(String x){
            x.split(" ");
            return new Double(0);
        }

        /*
        * Adds the parameter x to the instance variable x and returns the answer as a Double.
        */
        public Double x(Double x){
                System.out.println("== Adding ==");
                if (x(1).equals("+")){
                x = x(0) + x(2);
                }
                return new Double(0);
        }

        /*
        * Multiplies the parameter x by instance variable x and return the value as a Double.
        */
        public Double x(double x){
                System.out.println("== Multiplying ==");
                if(x(1).equals("x")){
                    x = x(0) * x(2);
                }
                return new Double(0);
        }

}

入力された double ("12 + 5") を分割しようとしています。" " を使用して分割し、2 番目の値に基づいて + または x にしてから、結果を加算または倍にします。分割と時間/追加だけでできると思っていましたが、うまくいきません。

4

1 に答える 1

2

文字列分割の結果を適切に保存しているようには見えません。

x.split(" ");

" " で区切られた各ピースを含む String[] を返します。

String x = "1 x 2";
String[] split = x.split(" ");

split[0] == "1";
split[1] == "x";
split[2] == "2";

メソッドと変数によりわかりやすい名前を使用すると、おそらくメリットが得られるでしょう。

このようなものはおそらくうまくいくでしょう:

public class Calculator {
    public static int result;

    public static void main(String[] args)
    {
        String expression = args[0];
        String[] terms = expression.split(" ");
        int firstNumber = Integer.parseInt(terms[0]);
        int secondNumber = Integer.parseInt(terms[2]);
        String operator = terms[1];

        switch (operator)
        {
            case "*":
                //multiply them
                break;
            case "+":
                //add them
                break;
            case "-":
                //subtract them
                break;
            case "/":
                //divide them
                break;
        }
    }
}
于 2013-11-13T16:49:34.730 に答える