public class Faint { 
    public static void main(String[] args) { 
        // 
        //在此处声明i,使判断成立.  
      // 
      if(i!=i){ 
            System.out.println("倒了....."); 
        } 
    } 
}

解决方案 »

  1.   

    只要i是NaN的时候就成立public class Test{
        public static void main(String[] args){
            double i = 0/0.0;
    if(i != i) {
    System.out.println("dsds");
    }
        }
    }
      

  2.   

    以上写法让人疑惑,最好是:double i=Double.NaN;
      

  3.   

    补充一句:
    NaN代表Not A Number,是一种不确定状态。
      

  4.   

    我在jdk1.5上运行过,还是不行
      

  5.   


    我在JDK1.6_13上直接运行可以输出"dsds",没报错哦?
      

  6.   

    public class Practice {
    public static void main(String[] args) {
                double i =0/0.0;
            // 
            // 在此处声明i,使判断成立.
          // 
          if(i!=i){ 
                System.out.println("倒了....."); 
            } 
        } 

    }支持
      

  7.   

    NaN代表Not A Number,是一种不确定状态,他不与任何值相等,包括其本身。
      

  8.   

    确实可以,昨天试了之所以不行,是由于把double i = Double.NaN;写成了Double i = Double.NaN;
    楼上有解释“NaN代表Not A Number,是一种不确定状态,他不与任何值相等,包括其本身。”
    但还不是很明白,NaN有什么用处,在平常的编程中是否用到它的这一特性?
      

  9.   

    以下转自《JAVA解惑》一书 
    IEEE 754 浮点算术保留了一个特殊的值用来表示一个不是数字的数量[IEEE 754]。这个值就是 NaN(“不是一个数字(Not a Number)”的缩写),对于所有没有良好的数字定义的浮点计算,例如 0.0/0.0,其值都是它。规范中描述道,NaN 不等于任何浮点数值,包括它自身在内[JLS 15.21.1]。 你可以用任何计算结果为 NaN 的浮点算术表达式来初始化 i,例如: 
    double i = 0.0 / 0.0; 
    同样,为了表达清晰,你可以使用标准类库提供的常量: 
    double i = Double.NaN; 
    NaN 还有其他的惊人之处。任何浮点操作,只要它的一个或多个操作数为 NaN,那么其结果为 NaN。这条规则是非常合理的,但是它却具有奇怪的结果。 下面的程序将打印 false: 
    class Test { 
    public static void main(String[] args) { 
    double i = 0.0 / 0.0; 
    System.out.println(i - i == 0); 


    这条计算 NaN 的规则所基于的原理是:一旦一个计算产生了 NaN,它就被损坏了,没有任何更进一步的计算可以修复这样的损坏。NaN 值意图使受损的计算继续执行下去,直到方便处理这种情况的地方为止。 总之,float 和 double 类型都有一个特殊的 NaN 值,用来表示不是数字的数量。对于涉及 NaN 值的计算,其规则很简单也很明智,但是这些规则的结果可能是违背直觉的。 
    =========================================== 
    一般在计算的时候,这两个只是在计算的时候,不想进行判断的时候(比如不想判断被除数是否为0),只要结果isNan就说明结果不对了