2011-10-23 19 views
-3

入力が/」2桁 を分割し、その上の加算と減算記号のであれば、入力が*乗算2桁、 ある場合、私は何かのように、 を行いたいです。Javaで特殊文字のif文を作成するにはどうすればよいですか?

+1

これまでに何を試していますか?参照:http://stackoverflow.com/questions/7828232 –

+0

[単純なJavaの再帰的な下降構文解析ライブラリとプレースホルダの併用](http://stackoverflow.com/questions/7828232/simple-java-recursive-descent-parsing -library-with-placeholders) –

答えて

1
if(input.equals("*")) // do multiplication 
else if(input.equals("/")) // do division 
else if ..... 
... 

のように...

0
if (input.equals("*")) { 
    // whatever 
} else if (input.equals("/")) { 
    // whatever 
} // etc. 

入力が文字の場合は、switchステートメントを使用することができます。

switch (input) { 
case '*': 
    // whatever 
    break; // That's important. 
case '/': 
    // whatever 
    break; 
default: 
    // handle unexpected input 
    break; 
} 

これはハンドラをコマンドへの入力文字/文字列のハッシュがあります、そして、あなたは完全に大きな条件文を避けることができる行動パターンを含め、実装することができる方法のトンがあります。あるいは、実際のパーサーを構築し、パーサーDSLでこの動作を定義することもできます。ここで

+1

@OPまた、Java 7では、switch文 –

+0

@ Eng.Fouad Great pointの引数としてStringを渡すことができます。 –

1

ことであなたを助けることができる方法:第二の入力が0除算したとき場合

public String calculate(int input1, String operator, int input2) throws RuntimeException{ 

      String result = ""; 

      if(operator.equals("*")) { 
        result = "" + (input1 * input2); 
      } 
      else if(operator.equals("/")) { 
        try{ 
         result = "" + (input1/input2); 
        } 
        catch(DividedByZeroException e) { 
        e.printStacktrace(); 
        } 
      } 
      else if(operator.equals("-")) { 
      result = "" + (input1 - input2); 
       } 
      else if(operator.equals("+")) { 
      result = "" + (input1 + input2); 
       } 
       else { 
        throw new RuntimeException("Wrong method input!!!!") 
       } 
    return result; 

} 

あなたは例外を取得します(あなたがゼロで割ることができない)ので、あなたは何とかそれを処理する必要があります。

0

私はオブジェクト指向の方法を行っています。

public interface Operator{ 
    int process(int left, int right); 
} 

このインターフェースのいくつかの実装を作成し、キーが演算子記号であるマップにそれらを置く:Operatorインタフェース、このような何かを定義します。

public int process(int left, int right, String operator){ 
    return operatorMap.get(operator).process(left, right); 
} 

(intはあなたのニーズに十分に正確でない場合は、別のタイプを使用)

0

回答の奇妙な多く:

今すぐあなたの方法でこのような何かをマップを使用しています。試してみてください:

char operator; 
switch (operator) 
{ 
case '+': 
    // ... 
    break; 
case '-': 
    // ... 
    break; 
case '*': 
    // ... 
    break; 
case '/': 
    // ... 
    break; 
// etc 
} 
関連する問題