1

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

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

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

以下是我设置 ArrayList 的方法:

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

谢谢。

4

3 回答 3

2

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

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

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

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

于 2013-01-21T19:15:52.070 回答
1

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

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

于 2013-01-21T19:14:54.697 回答
0

ArrayList的Java Docs说它测试字符串是否相等,所以“是的,我是”不起作用。

于 2013-01-21T19:17:25.727 回答