0

ユーザーが「123456789」などの数字の配列を入力すると、ユーザーは「PE」などのコマンドの文字列を入力することになり、私のプログラムは文字列内の各文字をチェックします。

P=最後に入力した数値である9を削除します
。E=最終結果を出力します。

この時点まで、すべてが正常に機能していました。

しかし、私の問題は、ユーザーが「P(任意の数字)」を入力したときにコマンドを読み取れる必要があり、その数字を数字の配列の最後に配置する必要があることです。

したがって、P(4)の場合、結果は「1234567894」になります。

これどうやってするの ?

これは私が今PとEのために持っているものです。

if (commandList.get(x).equals("P(")) {
    JOptionPane.showMessageDialog(null, "HI");
}
else if (commandList.get(x).equals("P")) {
    strList.remove(strList.size()-1);
    x++;
}
4

1 に答える 1

0

私が理解している限り、あなたの問題は文字列 "P( digit )" から' digit ' を抽出することですか?

たとえば、境界文字 (ここでは '(' と ')') を検索して、入力文字列を解析する必要があります。たとえば、次のようなものです。

String s = "P(3)";
String number = s.substring(s.indexOf("(") + 1, s.indexOf(")"));
strList.append(number);

しかし、これは括弧内のすべてのもの、たとえば "P(foooo)" の "foooo"も受け入れ、たとえば s = "P(123") のように ')' が見つからない場合はクラッシュし、" を受け入れます。 P(3)blah54" は厳密には無効です。パーサーを改善するには、正規表現を使用できます。たとえば、入力が正確に 1 桁の "P(2)" の形式であるかどうかを確認するには、次を使用できます。

String s = "P(3)";
if (!s.matches("P\\(\\d\\)"))
    throw new RuntimeException("invalid input format: " + s);
String number = s.substring(s.indexOf("(") + 1, s.indexOf(")"));
strList.append(number);

明示的に数字を int にキャストしたい場合は、Integer.parseInt(...) を参照してください。

int i = Integer.parseInt(number);
于 2012-12-20T19:51:35.367 に答える