与えられた文字列1.5 + 2
、私は解析し、Double、演算子、および整数を処理したいと思います。DoublesとStringsの両方を解析するカスタムデリミタを備えたスキャナですか?
以下のコードは、小数点以下が含まれていない文字列の期待通りに動作しますが、与えられた入力のためには、印刷します。
1.5 + 2
1 . 5 + 2
私は印刷にそれをたいと思いますが
カスタム正規表現を使用してScannerクラスを使用すると可能ですか?
String delimiter = "(?:\\s+)|(?<=[+)|(?=[+])";
Scanner scanner = new Scanner("1.5 + 2");
scanner.useDelimiter(delimiter);
while (scanner.hasNext()) {
String token = scanner.next();
System.out.println(token);
}
あなたが区切り文字としてスペースを使用していない理由はありますか? – intboolstring
はい、私は指定したはずです。入力が "1.5 + 2"の場合は、1.5、+、2を出力する必要があります。 – ab11
空白を処理する独自の[RDP](https://en.wikipedia.org/wiki/Recursive_descent_parser)を設計する必要があります。 。 – ChiefTwoPencils