2016-10-09 2 views
-2
String Str = new String("(300+23)*(43-21)/(84+7)"); 
      System.out.println("Return Value :"); 

      String[] a=Str.split(Str); 


String a="(" 
String b="300" 
String c="+" 

私は分割の方法に任意の提案を使用して式が終了するまで、上記のように出力を与える配列に、この単一の文字列を変換したい 文字列式分離

+2

Javaの変数は、「camelCase」では**常に**です。 'PascalCase'は' class'名( 'String'のような)から予約されています。例外も、言い訳もありません。コードを更新してください。 –

+0

valの間にセパレータを作成している場合は、このセパレータを使用してセパレータを分割することができます。たとえば、この文字列のような空白文字 'str ="(300 + 23)*(43-21)/(84 + 7)文字列[] a = Str.split( ""); ' –

答えて

1

とき上記のコードは、それのために働くしません。 Str.split(Str);を記述すると、split関数のパラメータは、より大きな文字列を小さな文字列の配列に分割する文字列にする必要があります。例えば 、ここではスプリット機能について

String s = "this is a string"; 
String [] array = s.split(" "); 

パラメータは、基本的にはちょうどスペースなので、スプリット機能は持っarrayに次のようになります「」春で区切られた部分にs文字列を、解除されます値:{"this", "is", "a", "string"}

私はこの例が決定的だと思います。あなたのコードでやっていることは、基本的に文字列自体を使って文字列を部分に分解しようとしていることです。

より大きな文字列を区切るためのトークンのように動作する良い文字列がないので、split関数だけを使用して達成したいものに対する答えを見つけることはできません。

+0

私は自分の答えを書いていませんでした。私は入力を誤って押してしまいましたが、その間に編集しました。新しい文字列( "..")について間違いであるとあなたは正しいです。私はそれに応じて私の答えを編集しました。 –

+0

よかった、ありがとうございました。 –

+0

アドバイスもありがとうございます。 –

0

単純な正規表現を使用して、必要なものを達成することができます。

public static void main(final String[] args) { 
    final String string = "(300+23)*(43-21)/(84+7)"; 
    final String[] arr = string.split("(?<![\\d.])|(?![\\d.])"); 
    for (final String s : arr) 
     System.out.println(s); 
} 

空白が存在する可能性がある場合は少し修正する必要がありますが、入力文字列の例では機能します。

関連する問題