我有这个问题:
我编写了这个函数,因为我需要在String数组中获取特定字符串st
出现的索引
static public int indicestring(String[] array, String st) {
int ret = -1;
for (int i = 0; i < array.length; i++){
if (st.equals(array[i])) {
ret=i;
break;
}
}
return ret;
}
然后我打电话给:
System.out.println("indicestring(NODO,"ET2"));
我得到了正确的号码。
但是当我这样做时:
String[] arcos2 = linea.split("-");//reading from a file and separating by "-"
String aux = arcos2[1];
System.out.println(arcos2[1]);
System.out.println(aux);
if (aux.equals(arcos2[1])) {
System.out.println("Is equal 1");
}
if (aux.equals("ET2")) {
System.out.println("Is equal 2");
}
if ("ET2".equals(aux)) {
System.out.println("is equal 3");
}
前两个打印件是ET2
,但是它只打印了3个ifs是&#34;等于1&#34; ....事情是我有近200个节点,如&#34 ; ET2&#34;只有3个失败并在第一个函数中给我-1 ...
我的问题是......我使用错误的数组来保存和比较数据,因为如果aux = arcos2 [1] =&#34; ET2&#34;,为什么&#39; aux.equals (&#34; ET2&#34;)&#39;或&#39; arcos2 [1] .equals(&#34; ET2)&#39;不工作
?还有其他功能你可以推荐尝试吗?(我尝试用compareTo() == 0
改变等号,但这也没有用,修剪也是推荐的。)
之前,我遇到了类似的错误,我比较了两个这样的数组:
if(a[0] == b[0] && a[1] == b[1])
有一个案例显然是正确的,但却被忽略了...... 但是当我改变它时它得到纠正:
if (Arrays.equals(a, b))
是否可能会有一些变化
答案 0 :(得分:1)
您应该在代码中放置调试断点并添加表达式监视以确定问题的根本原因。