比较数组字符串

时间:2012-12-20 19:13:38

标签: java arrays list

用户输入一组数字,例如“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++;
}

1 个答案:

答案 0 :(得分:0)

据我了解,您的问题是从字符串“P( digit )”中提取数字”?< / 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);