如何在java中检查字符串变量是否包含负值

时间:2012-07-24 06:05:02

标签: java

我需要在字符串变量上设置负值约束。例如: -

string zeroval = "0.0000"
String x = "";
if (x==null) || (x.equals(zeroval)) { // code which checks if string x has 0 or null value
              x = "--"                // replace it by --
}

同样我想添加另一段代码来检查String x是否包含任何负值(例如:"-0.025")并将其替换为 - 上面的String x不应包含null / zero / negative值

请帮忙

注意: - 为了添加负值,请将字符串转换为float,因为我无法使用模式匹配技术,例如: - x.equals(“ - ”)

4 个答案:

答案 0 :(得分:6)

您的输入数据是否始终包含有效数字?如果是这样,你可以使用:

 BigDecimal number = new BigDecimal(text);
 if (number.compareTo(BigDecimal.ZERO) <= 0) {
     text = "--";
 }

这将验证它确实 是一个数字以及执行检查。此外:

  • 它应对0的其他表示,例如“0.00”,“0”,“+ 0”
  • 它使用BigDecimal来避免二进制浮点表示中的奇怪(例如,非常小的正值被视为0)。不太可能是一个问题,但从根本上说你已经得到十进制数据,所以你不妨这样解析它。

答案 1 :(得分:0)

使用包装类将其转换为Integer或double。

String number="12.3434"
if(Double.parseDouble(number)<0)
//do stuff here

答案 2 :(得分:0)

您可以检查字符串是否以“ - ”开头:

if (x==null) || (x.equals(zeroval) || x.startsWith("-")) {
  x = "--";
}

通过使用字符串来表示数字数据,我不禁觉得你做了一些不明智的事情。

答案 3 :(得分:0)

您可以使用Double.parseDouble(String)Float.parseFloat (String)。这些方法可以帮助您分别获得doublefloat

在此之后,您可以轻松检查该值是否为负值。