0

我的输入字符串看起来像这样"10^-9"。由于 Java 不处理求幂并且"^"代表按位 XOR,因此我尝试以不同的方式进行操作。我将字符串拆分为 10 和 -9 并将其解析为双精度,然后用于Math.pow()获取它的值。代码如下所示:

String[] relFactorA = vA.getValue().split("^"); //vA.getValue is a String like `"10^-9"` or any other number instead of 9.
Double pow1 = Double.parseDouble(relFactorA[0]);
Double pow2 = Double.parseDouble(relFactorA[1]);
Double relFactor = Math.pow(pow1, pow2);
System.out.println(relFactor);

但是这种方法会导致 java.lang.NumberFormatException。在代码中我找不到错误,无论是我做错了什么还是编译器将“-(减号)”识别为“-(连字符)”,但我认为这不是原因,因为两个字符串看起来相同并且编译器应该看到这个。

4

3 回答 3

3

您可能没有拆分,^因为split使用正则表达式作为参数并且在正则表达式^中具有特殊含义(它的行首)。使其字面意思使用"\\^".

于 2013-10-09T13:33:37.153 回答
3

String.split()使用正则表达式作为参数。如果要拆分符号,请^改用\\^

String[] relFactorA = vA.getValue().split("\\^");
于 2013-10-09T13:33:45.583 回答
3

请注意,它String#split需要一个正则表达式而不是一个字符串:

公共字符串 [] 拆分(字符串正则表达式

您应该转义特殊字符 ^

vA.getValue().split("\\^");

转义正则表达式通常由 完成\,但在 Java 中,\表示为\\

相反,您可以使用Pattern#quote它将 视为^String ^不是 meta-character ^

返回指定字符串的文字模式字符串。

vA.getValue().split(Patter.quote("^"));

于 2013-10-09T13:34:23.483 回答