1

簡単にするために、「items」という名前の ArrayList (ユーザーが入力した文字列を格納する) と、次のコードを用意します。

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

テストしてみると、最初に「i am」と入力すると、本来のように「yay」と出力されます。しかし、「はい、私は」などと入力しても、何も出力されません。「はい、はい」などと入力すると「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し、2 番目のケースでは取得しません。

ユーザー入力を に変更するとyes, i am、 が得られますyay

于 2013-01-21T19:14:54.697 に答える
0

ArrayListのJavaDocsは、文字列が等しいかどうかをテストすると言っているので、「はい、私は」は機能しません。

于 2013-01-21T19:17:25.727 に答える