我有这个问题:
我编写此函数是因为我需要获取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为“Is equal 1”...。问题是我有近200个节点,例如“ET2”,并且只有3个节点出现故障,在-1中给了我-1第一个功能...我的问题是...。我使用错误的数组来保存和比较数据,因为如果aux = arcos2 [1] =“ET2”,为什么是'aux.equals(“ET2”)'或'arcos2 [1 ] .equals(“ET2)'无效
?您可以推荐尝试另一个功能吗?(我尝试用
compareTo() == 0
更改equals,但该方法也不起作用,建议也进行修整)。以前,我在比较两个数组时遇到了类似的错误:
if(a[0] == b[0] && a[1] == b[1])
有一种情况显然是正确的,但被忽略了。
但是当我将其更改为:
if (Arrays.equals(a, b))
可能有这样的变化吗
最佳答案
您应该在代码中放置一个调试断点,并添加表达式监视以识别问题的根本原因。