1. ホーム
  2. java

[解決済み] Java変数はどのように自分自身と異なることができますか?

2022-11-02 13:30:04

質問

この質問がJavaで解決できるかどうか疑問に思っています(私はJavaに慣れていません)。これはコードです。

class Condition {
    // you can change in the main
    public static void main(String[] args) { 
        int x = 0;
        if (x == x) {
            System.out.println("Ok");
        } else {
            System.out.println("Not ok");
        }
    }
}

私の研究室で次のような質問を受けました。どうすれば最初のケースをスキップできるのか (つまり x == x 条件を false にする) をスキップするにはどうしたらよいでしょうか。

どのように解決するのですか?

簡単な方法としては Float.NaN :

float x = Float.NaN;  // <--

if (x == x) {
    System.out.println("Ok");
} else {
    System.out.println("Not ok");
}

OKではない

と同じことができます。 Double.NaN .


から JLS §15.21.1. 数値の等式演算子 ==!= :

浮動小数点の等値性テストは、IEEE754規格の規則に従って行われます。

  • どちらかのオペランドがNaNである場合、その結果は ==false の結果ですが !=true .

    確かに、テスト x!=xtrue の値である場合に限り x がNaNである場合のみ。

...