【问题标题】:comparing array strings比较数组字符串
【发布时间】:2012-12-20 19:13:37
【问题描述】:

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

【问题讨论】:

  • 你的数字数组是整数类型还是字符串类型?但是你可以尝试使用这个commandList.get(x).contains("P(")
  • 看来你有一个列表,而不是一个数组。请为清楚起见进行编辑

标签: java arrays list


【解决方案1】:

据我了解,您的问题是 extract 从字符串 "P(digit)" 中提取 'digit' ?

你必须解析输入字符串,例如,通过搜索边界字符,这里是 '(' 和 ')'。例如通过类似的方式:

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

但这也将接受括号内的 anything,例如,“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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    相关资源
    最近更新 更多