中置式が入力されたときに操作の順序に従うことができる Java プログラムを作成しようとしています。入力を簡素化するために、式を使用して文字列全体を分割するのが最善であると判断しましたregex
。を除くすべてを配列内の6 3
独自のString
値に分割できました。splitLine
これに対する私の SSCCE の試みは次のとおりです。
String line = "6 + 5 + 6 3 + 18";
String regex = "(?<=[-+*/()])|(?=[-+*/()])"; //Not spitting 6 3 correctly
String[] splitLine = line.split(regex);
for (int i=0; i<splitLine.length; i++) {
System.out.println(splitLine[i]);
}
出力:
6
+
5
+
6 3 //Error here
+
18
期待される出力:
6
+
5
+
6 //Notice
3 //these
+
18
正規表現を変更しようと試みましたが、失敗しました。私の正規表現が配列内で6
と3
を独自のものに分割しない理由を誰か教えてもらえますか?Strings
splitLine
編集:私はこれを楽しみのためにやっているだけで、学校の仕事などのためではないことを指摘したかっただけです.単純な中置式を実行するプログラムを書くことができるかどうかを見たかっただけです. これを行うためのより良い方法があることに同意します。式がより複雑になると、何らかの問題が発生します。しかし、残念ながら、これが私の本が推奨する方法で、このステップにアプローチします。
迅速なコメントと回答をありがとうございます。