1

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

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 --
}

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

请帮忙

注意:-为了添加负值检查将字符串转换为浮点数,因为我不能使用模式匹配技术,例如:- x.equals("-")

4

4 回答 4

6

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

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

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

  • 它处理 0 的其他表示,例如“0.00”、“0”、“+0”
  • 它用于BigDecimal避免二进制浮点表示中的异常(例如,一个非常小的正值被视为 0)。不太可能成为问题,但基本上你十进制数据,所以你不妨这样解析它。
于 2012-07-24T06:08:16.010 回答
0

使用包装类将其转换为整数或双精度。

String number="12.3434"
if(Double.parseDouble(number)<0)
//do stuff here
于 2012-07-24T06:07:38.630 回答
0

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

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

我不禁觉得您使用字符串来表示数字数据是不明智的。

于 2012-07-24T06:08:15.480 回答
0

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

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

于 2012-07-24T06:08:31.247 回答