-2

以下の要素を持つスタック (レコード) があります。

first   20130512142202
second  20130512142204
third   20130512142206
fourth  20130512142209
fifth   20130512142212

そして、文字列値(「秒」としましょう)がスタック内の別の場所で参照されているかどうかを確認したいと思います。だから私は試しました:

while(!Records.empty()) {
    String checkRecord=Records.pop().toString();
    if(checkRecord.equals("second")) {
        System.out.println(checkRecord + " found");
    }

    else {
        System.out.println(checkRecord +" not found");
    }
}

System.out.println("END OF STACK");

20130512142204Equals は false を返しますが、これは問題ありません。"second" は "second ( )"とまったく同じではないからです。だから私は何か他のものが必要contains()で、trueを返すものを試しましたが、次の場合でもtrueを返します:

string test = "second  20130512142204";
test.contains(rt);

contains() は、必要なものを実装するための正しい選択ですか、それとも別の方法論/コードの変更を試す必要がありますか? 私が与える文字列がスタックの行の一部である場合にのみ、真になりたいです。

4

1 に答える 1

0

質問のスタックの例から String startsWith "second" を見つけることに特に興味がある場合。"".startsWith() 関数を使用する

だからコードは

  while(!Records.empty()){
        String checkRecord=Records.pop().toString();

        //True when the current checkRecord string startsWith "second"
        if(checkRecord.startsWith("second"))
        {

            System.out.println(checkRecord + " found");
        }else{
            System.out.println(checkRecord +" not found");
        }
    }
    System.out.println("END OF STACK");

さらに、"".contains() 関数は、上記のコードとまったく同じことを行う必要があります。なぜうまくいかなかったのかわかりません。

于 2013-05-12T12:32:47.450 に答える