我的输入字符串如下"10^-9"
。由于Java不处理求幂,而"^"
代表按位异或,我尝试以不同方式执行。我在10和-9中拆分了String并将其解析为double,然后使用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。在代码中我找不到错误,我是否做错了或编译器将“ - (减号)”识别为“ - (连字符)”,但我不认为这是原因,因为两个字符串看起来都是一样的编译器应该看到这个。
答案 0 :(得分:3)
您可能没有在^
上拆分,因为split
使用正则表达式作为参数,而正则表达式^
具有特殊含义(它的行首)。要使其文字使用"\\^"
。
答案 1 :(得分:3)
String.split()
使用正则表达式作为参数。如果您要分割符号^
,请使用\\^
。
String[] relFactorA = vA.getValue().split("\\^");
答案 2 :(得分:3)
请注意,String#split
需要正则表达式而不是字符串:
public String [] split(String regex )
你应该逃避special character ^
:
vA.getValue().split("\\^");
转义正则表达式通常由\
完成,但在Java中,\
表示为\\
。
相反,您可以使用Pattern#quote
将^
视为字符串 ^
而不是元字符^
:< / p>
返回指定String的文字模式String 。
vA.getValue().split(Patter.quote("^"));