次のような式が与えられた場合:
4*x+16-455
トークンを個別に取得できる必要があります。したがって、私は必要です:
4
*
x
+
16
-
455
「nextInt()」はすべて 1 つの文字列であるため、単に使用することはできません。これを回避するにはどうすればよいですか? オペレーターで分割してから、2つを交互に使用することを考えましたが、これを行うにはもっと簡単な方法があるはずです。
次のような式が与えられた場合:
4*x+16-455
トークンを個別に取得できる必要があります。したがって、私は必要です:
4
*
x
+
16
-
455
「nextInt()」はすべて 1 つの文字列であるため、単に使用することはできません。これを回避するにはどうすればよいですか? オペレーターで分割してから、2つを交互に使用することを考えましたが、これを行うにはもっと簡単な方法があるはずです。
文字列全体を読み取り、それをトークンに分割する最も簡単な方法。正規表現でトークンを選択できます。あなたの例は、次の正規表現によってトークンに解析できます。
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
多くの異なるトークンを備えたより賢いスプリッターが必要な場合は、正規表現を変更するか、インタープリター パターンを使用してソリューションをより読みやすくすることを検討してください。