0

私の入力文字列は次のようになります"10^-9"。Java は累乗を処理せず"^"、ビットごとの XOR を表すため、別の方法で実行しようとしました。String を 10 と -9 に分割し、それを 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 が発生します。コードでは、私が何か間違ったことをしたか、コンパイラが「-(マイナス)」を「-(ハイフン)」として認識したかどうかにかかわらず、エラーを見つけることができませんが、両方の文字列が同じように見え、コンパイラはこれを確認する必要があります。

4

3 に答える 3

3

文字列ではなく正規表現String#splitを取ることに注意してください。

public String[] split(String regex )

特殊文字 をエスケープする必要があります^:

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

通常、正規表現のエスケープは によって行われ\ますが、Java では\として表され\\ます。

代わりに、メタ文字ではなく文字列としてPattern#quote扱うことを使用できます。^ ^^

指定された String のリテラル パターン Stringを返します。

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

于 2013-10-09T13:34:23.483 に答える
3

パラメータとして正規表現を使用し、正規表現には特別な意味があるため(行の開始)、^おそらく分割しませんでした。文字どおりにするには.split^"\\^"

于 2013-10-09T13:33:37.153 に答える
3

String.split()パラメータとして正規表現を使用します。シンボルを分割したい場合は、代わりに^使用してください。\\^

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