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(数字)”中提取数字”?

那么你必须解析输入字符串,例如,通过搜索边界字符,这里是'('和')'。例如通过这样的事情:

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" 严格来说是无效的。为了改进您的解析器,您可以使用正则表达式,例如,检查输入是否恰好是单个数字的“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 回答