1つの方法で問題があります。入力には、(a+-b*i)some sign(c+-d*i) などの文字列があります。プログラムはこれを計算し、結果を出力する必要があります。最初のブラケットで符号のインデックスを取得し、2 番目のブラケットでインデックスを取得する必要があります。そして、私のプログラムが機能するよりも。ただし、入力 (ab*i)-(cd*i) または (ab*i)*(cd*i) のみの場合、メソッドは間違った結果 -1 を返します。
2 つの括弧に対する私の方法。
public int getSign1(String str)
{
int sign1;
if(str.indexOf("+") < str.indexOf(")"))
sign1 = str.indexOf("+");
else if(str.indexOf("-", 2) < str.indexOf(")"))
sign1 = str.indexOf("-", 2);
else sign1 = -1;
return sign1;
}
public int getSign2(String str)
{
int sign2;
if(str.lastIndexOf("+") > str.lastIndexOf("("))
sign2 = str.lastIndexOf("+");
else if(str.lastIndexOf("-") > str.lastIndexOf("("))
sign2 = str.lastIndexOf("-");
else sign2 = -1;
return sign2;
}
2番目の方法は常に機能しますが、最初の方法は機能しません(エラーを見つけるのを手伝ってください)。
例:(1-2i)*(3-4i)
最初のメソッドは -1 を返しますが、2 を返しません。なぜですか?