Stack.peek()の比較では、-1024に対して間違った結果が返されます

DroidDev

私は2つのスタックを取るs1s2、いくつかの値でそれらを初期化し、最終的には、両方持っている-1024そこのようにtop

さて、あるif状態で両方のピークを比較すると、結果は間違っています。例えば:

if (s1.peek() == s2.peek()) --> returns false

両方のピークが-1024値として持っている場合でも。

だが

さまざまな変数の値を取得して比較すると、問題なく機能します。例えば:

int first = s1.peek();
int second = s2.peek();
if (first == second) --> returns true

他の値(例:10)でも同じことを確認しました。その場合、直接ピーク比較は正常に機能します。

ピークを直接比較することで何か問題が発生しているのでしょうか、それとも何らかの形で比較されている値に関連しているのでしょうか。

以下は最小限のコード化された例です(私は最小スタック問題を実装するための練習としてこれを行っていました):

public class MinStack {

    public static void main(String[] args) {
        MinStack minStack = new MinStack();
        minStack.push(512);
        minStack.push(-1024);
        minStack.push(-1024);
        minStack.push(512);
        minStack.pop();
        System.out.print(minStack.getMin());
        minStack.pop();
        System.out.print(minStack.getMin());
        minStack.pop();
        System.out.print(minStack.getMin());
    }

    Stack<Integer> originalStack;
    Stack<Integer> minStack;

    /** initialize your data structure here. */
    public MinStack() {
        originalStack = new Stack<>();
        minStack = new Stack<>();
    }

    public void push(int x) {
        originalStack.push(x);
        if(minStack.isEmpty() || minStack.peek() >= x)
            minStack.push(x);
    }

    public void pop() {
        if(originalStack.peek() == minStack.peek())
            minStack.pop();
        originalStack.pop();
    }

    public int top() {
        return originalStack.peek();
    }

    public int getMin() {
        return minStack.peek();
    }

}
セルゲイ・カリニチェンコ

これはIntegerインターンが原因で発生します。java.lang.Integerなどの小さな値を表すオブジェクト10は事前に製造されているため、102つの別々のスタックでオートボックス化をプッシュすると、同じオブジェクトがプッシュされます。

コード内のあなたがいる場所に到達するpeek()と、同じオブジェクトがに対して返されますが10、2つの異なるオブジェクトがに対して返され-1024ます。その==ため10はtrueを返しますが、は返しません-1024

-ed値intを受け取る変数を追加するとpeek()、自動アンボックス化intによって、から同じ値のが収集されるIntegerため、のコードが-1024再び機能します。

条件==付きequalsで次のように置き換えることこれを修正できます。

if (s1.peek().equals(s2.peek())) --> returns true

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Stack.Peek()がメソッドなのはなぜですか?

分類Dev

MySQLでUtf-8を使用して選択すると、間違った結果が返されます

分類Dev

StringBuilderの比較で間違った結果が返される

分類Dev

bashの論理比較では、末尾が、vのRCSファイルに対して間違った答えが返されます

分類Dev

GETDATE()をSQL Serverに格納されているGETDATE()と比較した結果が間違っています

分類Dev

DATEのOracleSQL比較は間違った結果を返します

分類Dev

DAOレイヤーのJUnitテストがpostgresqlexists()クエリに対して間違った結果を返す

分類Dev

リクエストを使用して常にsubredditのトップ投稿をスクレイピングすると、間違った結果が返されます

分類Dev

Scipyは行列乗算に対して間違った結果を出します

分類Dev

Oracleの "order by"句は、結果を間違った順序で返すか、結果が欠落しています

分類Dev

単純なSQLクエリですが、間違った結果が返されました

分類Dev

AMPL IPOPTは、解決結果が「解決」されている間、間違った最適解を提供します

分類Dev

IsBitSet?関数は、Onelinerとして記述された場合にのみ間違った結果を返します

分類Dev

React Typescript-Math.randomは、最小値と最大値が設定されていても間違った結果を返します

分類Dev

JPAを使用している間はPostgresで例外「該当する結果がクエリによって返されませんでした」の解決方法

分類Dev

jqueryを使用してボタンの高さを特定すると、間違った結果が得られます

分類Dev

Python辞書で値を探すと間違った結果が返される

分類Dev

SimpleDateFormatを使用して文字列から日付を解析すると、間違った結果が返されるのはなぜですか?(Java)

分類Dev

Pythonで文字列をハッシュすると、間違った結果が返されますか?

分類Dev

関数内でnull値をチェックすると、間違った結果が返されます

分類Dev

in_array_rで検索すると、間違った結果が返されます

分類Dev

パンダの集計値を集計すると、間違った結果が返されます

分類Dev

「FindUsages」はクラスメソッドに対して間違った結果を表示します

分類Dev

Djangoクエリセットの結果がテストに対して間違っています

分類Dev

この同期されたプログラムが間違った結果を返すのはなぜですか?

分類Dev

球の体積を計算した後に間違った結果が出力されました

分類Dev

File.isFileは()間違った結果を返しますか?

分類Dev

listviewonClickは間違った結果を返します

分類Dev

集計+平均は間違った結果を返します

Related 関連記事

  1. 1

    Stack.Peek()がメソッドなのはなぜですか?

  2. 2

    MySQLでUtf-8を使用して選択すると、間違った結果が返されます

  3. 3

    StringBuilderの比較で間違った結果が返される

  4. 4

    bashの論理比較では、末尾が、vのRCSファイルに対して間違った答えが返されます

  5. 5

    GETDATE()をSQL Serverに格納されているGETDATE()と比較した結果が間違っています

  6. 6

    DATEのOracleSQL比較は間違った結果を返します

  7. 7

    DAOレイヤーのJUnitテストがpostgresqlexists()クエリに対して間違った結果を返す

  8. 8

    リクエストを使用して常にsubredditのトップ投稿をスクレイピングすると、間違った結果が返されます

  9. 9

    Scipyは行列乗算に対して間違った結果を出します

  10. 10

    Oracleの "order by"句は、結果を間違った順序で返すか、結果が欠落しています

  11. 11

    単純なSQLクエリですが、間違った結果が返されました

  12. 12

    AMPL IPOPTは、解決結果が「解決」されている間、間違った最適解を提供します

  13. 13

    IsBitSet?関数は、Onelinerとして記述された場合にのみ間違った結果を返します

  14. 14

    React Typescript-Math.randomは、最小値と最大値が設定されていても間違った結果を返します

  15. 15

    JPAを使用している間はPostgresで例外「該当する結果がクエリによって返されませんでした」の解決方法

  16. 16

    jqueryを使用してボタンの高さを特定すると、間違った結果が得られます

  17. 17

    Python辞書で値を探すと間違った結果が返される

  18. 18

    SimpleDateFormatを使用して文字列から日付を解析すると、間違った結果が返されるのはなぜですか?(Java)

  19. 19

    Pythonで文字列をハッシュすると、間違った結果が返されますか?

  20. 20

    関数内でnull値をチェックすると、間違った結果が返されます

  21. 21

    in_array_rで検索すると、間違った結果が返されます

  22. 22

    パンダの集計値を集計すると、間違った結果が返されます

  23. 23

    「FindUsages」はクラスメソッドに対して間違った結果を表示します

  24. 24

    Djangoクエリセットの結果がテストに対して間違っています

  25. 25

    この同期されたプログラムが間違った結果を返すのはなぜですか?

  26. 26

    球の体積を計算した後に間違った結果が出力されました

  27. 27

    File.isFileは()間違った結果を返しますか?

  28. 28

    listviewonClickは間違った結果を返します

  29. 29

    集計+平均は間違った結果を返します

ホットタグ

アーカイブ