2012-03-16 9 views
1

電卓の入力となる文字列を分割する必要があります。私はJavaのsplit関数を使って2つの配列に分割したい。最初の配列は、文字列の番号のみを持つ必要があります(小数点以下の桁数を含みます)。 2つ目は "+ - * /"のような数学演算子だけを含めるべきです。現在、これは私のコードです:"+"、 " - "、 "*"、 "/"のような基本区切り文字で区切り文字を区切り文字として区切るにはどうすればよいですか?

String[] numbers = s.split("[[+-/*]&&[^.]]"); 
String[] operators = s.split("[^*/+-]"); 

私は(たとえ小数点で)別々の数字配列に完全に罰金文字列を分割することができるように見えるが、私はに文字列を分割することができるように見えることはできません数字のある場所に小数点がある場合は、別の演算子を使用します(ただし、別の方法で動作します)。

例:「9.0/3 + 2.3」を{/、+}にします。

私の正規表現を(2行目のコードのために)希望の出力を得るために変更する必要がありますか?私が試したことはすべて働いていません。

答えて

3

はこれを試してみてください:

String[] numbers = s.split("[[+-/*]&&[^.]]"); 

ArrayList<String> ops = new ArrayList<String>(); 
for (String op : s.split("[^*/+-]")) 
    if (!op.isEmpty()) 
     ops.add(op); 
String[] operators = ops.toArray(new String[0]); 
+0

は、その最初の行のみに適用されませんか?私の2番目のコード行は厄介なものと思われます。 – Mike

+0

これは、私の最初のコード行がすでに行っていることを信じています。例として、私は "9.0/3"という文字列をすべてで分割する必要がありますが、演算子です。だから私の2番目のコード行は私に与え、配列に "/"を付けてください。 – Mike

+0

@マイク私は私の答えを更新しました、演算子の配列は空の文字列でいっぱいになっていました、上記の答えはあなたが期待した結果を与える必要があります。 –

関連する問題