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