0

足し算と引き算をするメソッドを書こうとしています

indexOf()、lastIndexOf()を使用する

たとえば、string s = "3 + 3"この文字列を2つのサブ文字列に分割してから、特定の操作を実行します。

// for addition
String s = "3 + 3";
int indexOfPlus = s.indexOf('+');

String beforePlus = s.substring(0,indexOfPlus);
String afterPlus= s.substring(indexOfPlus+1);
 .....
 .....

// for subtraction
String s = "3 - 3";
int indexOfMinus = s.indexOf('-');

String beforeMinus = s.substring(0,indexOfMinus);
String afterMinus = s.substring(indexOfMinus+1);

 ....
 ....

私の質問は次のとおりです。ただし、「3+-1」や「3-+1」などの文字列をサブ文字列に分割する方法がわかりません。

4

4 に答える 4

1

javax.script.ScriptEngineManagerを使用します。

ScriptEngineManager manager = new ScriptEngineManager();

ScriptEngine engine = manager.getEngineByName("js");<br>
Object result = engine.eval("3+ -4");<br>
System.out.println(result);<br>

出力:-1.0

また

BeanShellを使用するhttp://www.beanshell.org/download.html
Interpreter interpreter = new Interpreter();

interpreter.eval("result = 3+-4");<br>
System.out.println(interpreter.get("result"));<br>

出力:-1

于 2012-12-04T10:25:24.183 に答える
1

あなたができることは、最初に文字列を調べて、doo操作の算術演算(つまり、「1 + -1」->「1-1」、「1--1」->「1 + 1」など)を実行することです。操作付き

于 2012-12-04T10:07:02.237 に答える
1

+と-のそれぞれを2項演算子と単項演算子の2つの異なる演算子として扱います。式の先頭または別の演算子の後に「-」が表示されている場合、それは単項-です。2つの式の間にある場合は、binary-です。AST形式では、単項には1つの子があり、バイナリには2つの子があります。

于 2012-12-04T10:08:56.913 に答える
1

まず、オペランドと演算ごとに別々のフィールドを使用することをお勧めします。そうすれば、何も分割せずに数値を解析するだけで済みます。

正規表現と呼ばれるものがありますが、少し高度ですが、String.split()メソッドを使用してこれらの操作をはるかに簡単に実行できるようになります。このメソッドは、パラメーターとして正規表現を受け取り、分割された文字列を配列として返します。 5 + 5 ")。split(" [-+] ")は、それぞれ5と5を文字列として返します。

using indexOf only I would do something like this (for "3- +1"):

int i1,i2;
String op;
i1 = s.indexOf("-");
i2= s.indexOf("+");
if ( i1<0 || i2<0)
   //only one operation
else if(i1<i2)
   //minus logic;
else if (i2<i1)
   // plus logic
于 2012-12-04T10:19:51.130 に答える