可空双倍

时间:2014-10-23 12:33:33

标签: java null double

这是一个简单的问题。如何将double初始化为null?在级别为空时,它将要求用户输入数据。否则,如果数据已经输入,它将要求用户覆盖保存更改。从下面的代码中,我只能运行" if(level == null){"而不是覆盖声明

public static void inValue() {
  double level = null; 
  if(level == null){
      System.out.println("Enter level: ");
         level = sc.nextDouble();
         pat1.setLevel(level);
         break;      
  }
  else{
     System.out.println("Overwrite");                           
     System.out.println("Enter level: ");
     level = sc.nextDouble();
     pat1.setLevel(level);
     break;     
  } 
}

2 个答案:

答案 0 :(得分:4)

使用java.lang.Double代替原始double

Double扩展Object并且可以为空。

例如:

Double level = null;

API here

备注

  • 在您的情况下,只会执行if语句,因为levelnull / if范围之外被声明为else
  • 您的break语句在此上下文中无用。

答案 1 :(得分:1)

要为null分配一个双倍的值,您必须使用java.lang.Double类。

但这只是你问题的一部分。 每次拨打inValue()时,都会将level设置为null。 所以level==null总是如此。

您必须在此函数之外声明您的level对象,以便它保留以前的值。