1

次のような式が与えられた場合:

4*x+16-455

トークンを個別に取得できる必要があります。したがって、私は必要です:

4
*
x
+
16
-
455

「nextInt()」はすべて 1 つの文字列であるため、単に使用することはできません。これを回避するにはどうすればよいですか? オペレーターで分割してから、2つを交互に使用することを考えましたが、これを行うにはもっと簡単な方法があるはずです。

4

1 に答える 1

0

文字列全体を読み取り、それをトークンに分割する最も簡単な方法。正規表現でトークンを選択できます。あなたの例は、次の正規表現によってトークンに解析できます。

String s = "4*x+16-455";
Pattern p = Pattern.compile("([0-9]+|[a-z]+|[*//+//-])");
Matcher m = p.matcher(s);
while(m.find()) {
   System.out.println(m.group());
}

出力:

4
*
x
+
16
-
455

多くの異なるトークンを備えたより賢いスプリッターが必要な場合は、正規表現を変更するか、インタープリター パターンを使用してソリューションをより読みやすくすることを検討してください。

于 2013-11-03T20:41:10.260 に答える