class WL
{ private double value=0;
  private String scale="none";
  private boolean isValid=false;
  public WL(double _value,String _scale)
  { value=_value;
    scale=_scale;
    if((value>=0)&&((scale.equals("meter"))||(scale.equals("feet"))))
    isValid=true;
  }
  public WL convertToFeet()
  {if((scale.equals("feet"))||(!isValid))
   return this;
   else
   return new WL(value*3.2809,"feet");
  }
  public WL convertToMeter()
  {if(scale.equals("meter"))
   return this;
   else
   return new WL(value/3.2809,"meter");
  }
  public void showWL()
  {if(isValid)
    System.out.println(value+""+scale);
   else
    System.out.println("invalid length");
  }
}
public class Length
{public static void main(String args[])
{ WL a=new WL(10,"feet");
  a.convertToFeet().showWL();
}
}
大家帮我看看,if((scale.equals("feet"))||(!isValid))里面的!isValid是什么意思?有什么作用?

解决方案 »

  1.   

    private boolean isValid=false; //你不是在这定义了吗? !isValid就是取非~
      

  2.   

    我的对象a的取直是正确的,isValid不就变成TRUE了吗?那为什么是!isValid才执行呢,不应该是isValid才执行的吗
      

  3.   

    isvalid=true;作为布尔判断 它是一个标记!isValid就是value<0时做出判断
      

  4.   

    如果scale是meter同时value的值是大于零的,或者scale 是feet,
    isValue就为true
      

  5.   

    因为你上边定义private boolean isValid=false;所以if((scale.equals("feet")) ¦ ¦(!isValid))意思就是
    if((scale.equals("feet"))||true)前面的scale.equals("feet")输出的值也是true or false的