我在一种方法上遇到了麻烦。在输入中,我们有字符串,例如 (a+-b*i)some sign(c+-d*i)。程序必须计算这个并输出结果。我需要在第一个括号中获取符号索引,在第二个括号中获取索引。而且我的程序将起作用。但是,仅在输入 (ab*i)-(cd*i) 或 (ab*i)*(cd*i) 时,方法返回错误结果 -1。
我的两个括号的方法。
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;
}
第二种方法总是有效,但不是第一种(请帮我找出错误)。
例子:(1-2i)*(3-4i)
第一种方法返回 -1,但不是 2。为什么?