【问题标题】:Using Java's ArrayList lastIndexOf()使用 Java 的 ArrayList lastIndexOf()
【发布时间】:2013-01-21 19:09:51
【问题描述】:

为了简单起见,我有一个名为“items”的 ArrayList(它存储用户输入的字符串)和这段代码:

int index = items.lastIndexOf("i am");
if (index >= 0)
System.out.println("yay");

当我测试它时,如果我在开头输入“我是”,它会输出“yay”,就像它应该的那样。但是,如果我输入“是的,我是”之类的内容,它不会输出任何内容。有没有办法让我输入“是的,我是”之类的内容时显示“耶”,或者我是否仅限于在开头使用它?

这是我设置 ArrayList 的方法:

List<String> items = Arrays.asList(user.split("\\s*,\\s*"));

谢谢。

【问题讨论】:

  • 您能否对原始字符串 (user) 进行匹配?
  • 其实,只是为了澄清一下我理解了这个问题,当你输入"i am"时,你会得到一个包含"i am"的元素列表吗?与"yes i am" 一样吗?我想它们将作为单个元素添加到列表中。我猜对了吗?

标签: java arraylist indexof lastindexof


【解决方案1】:

在我看来,您正在用逗号分割输入字符串(也以一种尴尬的方式)。由于yes I am 不包含逗号,因此您的数组将只有一个元素:["yes I am"]。这意味着 lastIndexOf("i am") 将不匹配。因此,您不会看到 yay 被打印出来。

现在,关于如何进行这项工作。

  1. 输入yes, i am
  2. 正如有人建议的那样 在评论中,匹配原始输入字符串 user.indexof("i am")

基本上,很难推荐解决方案,因为我不知道您的最终目标是什么。

【讨论】:

  • 我只匹配原始字符串并且它有效,所以我想我可以忍受。谢谢:)
【解决方案2】:

问题是您的正则表达式没有拆分您指定的输入。例如,i amyes i am 将是列表中的单个元素。这就是为什么在第一种情况下你会得到 yay 而在第二种情况下 - 不是。

如果您将用户输入更改为yes, i am,您将获得yay

【讨论】:

    【解决方案3】:

    ArrayList 的Java Docs 表示它会测试字符串是否相等,因此“是的,我是”不起作用。

    【讨论】:

      猜你喜欢
      • 2020-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多