Java 在某些测试中输出错误
我有一种方法有问题。在输入中我们有字符串,例如(a+-b*i)一些符号(c+-d*i)。程序必须计算并输出结果。我需要在第一个括号中对符号进行索引,在第二个括号中进行索引。然后我的程序就可以运行了。但是,仅在输入(a-b*i)-(c-d*i)或(a-b*i)*(c-d*i)时,返回错误结果-1的方法 我的方法有两个括号Java 在某些测试中输出错误,java,string,math,Java,String,Math,我有一种方法有问题。在输入中我们有字符串,例如(a+-b*i)一些符号(c+-d*i)。程序必须计算并输出结果。我需要在第一个括号中对符号进行索引,在第二个括号中进行索引。然后我的程序就可以运行了。但是,仅在输入(a-b*i)-(c-d*i)或(a-b*i)*(c-d*i)时,返回错误结果-1的方法 我的方法有两个括号 public int getSign1(String str) { int sign1; if(str.indexOf("+") <
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;
}
public int getSign1(String str)
{
int-sign1;
if(str.indexOf(“+”)str.lastIndexOf(“(”)
sign2=str.lastIndexOf(“+”);
else if(str.lastIndexOf(“-”)>str.lastIndexOf(“(”)
sign2=str.lastIndexOf(“-”);
else sign2=-1;
返回标志2;
}
第二种方法始终有效,但第一种方法无效(请帮助我查找错误)
示例:(1-2i)*(3-4i)
第一个方法返回-1,但不是2。为什么会出现这种情况?因为在表达式中:
(1-2i)*(3-4i)
您没有任何+
字符,在看到以下内容后:
字符中最后一次出现的字符的索引
由该对象表示的序列,或-1(如果字符没有)
发生
然后你就知道为什么str.lastIndexOf(“+”)
会是-1。当然它是str.indexOf(“)”
因此sign1
将为-1
您可以通过以下方式进行修复:
if(str.indexOf("+")!= -1 && str.indexOf("+") < str.indexOf(")"))
if(str.indexOf(“+”)=-1&&str.indexOf(“+”)
发生这种情况是因为在表达式中:
(1-2i)*(3-4i)
您没有任何+
字符,在看到以下内容后:
字符中最后一次出现的字符的索引
由该对象表示的序列,或-1(如果字符没有)
发生
然后您知道为什么str.lastIndexOf(“+”)
将为-1。当然是<str.indexOf(“)”
因此sign1
将为-1
您可以通过以下方式进行修复:
if(str.indexOf("+")!= -1 && str.indexOf("+") < str.indexOf(")"))
if(str.indexOf(“+”)=-1&&str.indexOf(“+”)
对于输入(a-b*i)-(c-d*i)
,此字符串中没有“+”
public int getSign1(String str){
if(str.indexOf("+") < str.indexOf(")"))
sign1 = str.indexOf("+");
..
}
public int getSign1(String str){
if(str.indexOf(“+”)
在这个方法中,如果你首先检查“+”,那么它不在那里,它的索引是-1,它小于str.indexOf(“)”
索引,所以它的返回-1
对于输入(a-b*i)-(c-d*i)
,在这个字符串中没有“+”
public int getSign1(String str){
if(str.indexOf("+") < str.indexOf(")"))
sign1 = str.indexOf("+");
..
}
public int getSign1(String str){
if(str.indexOf(“+”)
在这个方法中,如果您首先检查“+”,那么它不在那里,它的索引是-1,它小于
str.indexOf(“)”
索引,所以它的返回-1
非常感谢。我忘了,非常感谢你。我忘了