2016-08-06 34 views
0

setter中的值来自JTextFeild。我尝试了不同的方法,但它不起作用。我想打印出我的自定义错误信息。它不适用于double,String变量在堆栈跟踪中显示错误消息。验证setter方法中的输入是double还是String

这是String方法。

public void setInventoryname(String inventoryname) throws Exception { 
     if(inventoryname.isEmpty()){ 
      throw new Exception ("Medicine name cannot be empty"); 
     } 
     else{ 
     this.inventoryname = inventoryname; 
    } 
    } 

字符串方法的结果。

java.lang.Exception: Medicine name cannot be empty 

这就是双方法

public void setInventorydesc(double inventorydesc) throws Exception { 
     if(!Double.toString(inventorydesc).isEmpty()){ 

      throw new Exception("Set a number in Inventory qunatity"); 

     } 
     else 
     { 
     this.inventoryqty = inventorydesc; 

     } 
    } 

的双

java.lang.NumberFormatException: For input string: "dfasdf" 

我希望收到相同的结果字符串双的结果。

回答

0

使用验证API并把你的消息。 检查org.apache.commons.validator

+0

我检查出来了。没有得到一件事。是否有任何简单的解决方案,以适应if条件或什么。 – Ace

0

也许你应该退后一步,问自己第二个问题:这是否真的使

我的意思是说:你有两种不同的方法,它们具有完全不同的参数;并有完全的语义;你仍然在问,两者都给你同样的错误信息?

让我们仔细看看。首先投掷异常对象是非常不好的做法。如果你想使用一个检查过的异常,那么你最好创建你自己的子类并使用它。如果你更喜欢未经检查的例外,那么你可以抛出IllegalArgumentException

只是为了记录:当你收到一个double的说法,那个东西总是一个数字。有人已经把传入的字符串编成了一个数字。所以你的方法是毫无意义的。换句话说:除了我告诉你的事情之外,你应该看看代码你的方法调用

最后:阅读java语言风格指南。你应该为你的变量和方法名称使用camelCase。并且绝对没有必要缩写,称之为inventoryQuantity;那么大家都知道它是什么!而且你知道,它是绝对是错误,称为setInventory的方法描述更改字段的值称为库存数量。这可能听起来很挑剔,但请放心:精确和严谨是编程的核心实践之一!

+0

不一样的错误消息,即抛出的消息。抛出异常。我只需要比较参数的输入是否为String。任何字母必须被视为无效的条目 – Ace

+0

我不明白你在说什么。再次说明:你的两个方法的参数**已经具有不同的类型。一个是字符串,另一个是原始类型double。双是**从来没有**一个字符串。并且您要求抛出**相同的**异常,并为** **不同的**错误提供**相同的**消息。这不可能是正确的! – GhostCat

0

双变量永远不能为空,它可以为零。

你必须初始化双变量,否则编译器会抛出错误。

如果零值是你的意思是空的,那么你可以将它与零进行比较来检查。

你不能保持双变量未初始化,它可以与字符串,但没有双重。

+0

setter参数中的值将来自Jtextfeild。如果员工在JtextFeild中输入字符串。我想抛出自定义错误。 – Ace

+0

为此,您可以使用Double.isNan(double d)方法来验证值是否为数字。或者尝试键入将字符串转换为double,如果它进入catch块,然后向用户显示错误消息 –

0

通inventorydesc作为字符串第一 - 然后使用它......

public void setInventorydesc(String inventorydesc) throws Exception { 
      if(inventorydesc==null ||inventorydesc.isEmpty()){ 
       throw new Exception("Set a number in Inventory qunatity"); 
      } 
      else 
      { 
      try{ 
      this.inventoryqty = Double.parseDouble(inventorydesc); 
      }catch (NumberFormatException e){ 
       throw new Exception("Inventory qunatity must be double"); 
      } 

      } 
     } 
0

如果数字来自一个文本字段首先你必须分析它得到的两倍。

public static void setInventorydesc(String inventorydesc) throws Exception { 
    try{ 
     double convertedInventorydesc = Double.parseDouble(inventorydesc); 
     this.inventoryqty = convertedInventorydesc; 
    } 
    catch (NumberFormatException ex){ 
     throw new Exception("Set a number in Inventory quantity",ex); 
    } 
} 
0

尝试使用这种方法

Double.isNan(double d) 

使用此方法,以验证值是数字或not.Or尝试键入铸字符串如果它进入catch块然后显示错误的两倍给用户的信息