很抱歉,如果这个问题有点难以理解。我需要将一个字符串(currToken)与ArrayList中对象的字符串名称进行比较,但由于某种原因,这很难实现。
System.out.println(currToken.compareTo(arrays.get(0).name));
System.out.println("Array detected");
int i =0;
for(i=0;i<arrays.size()-1;i++)
{
if(currToken.compareTo(arrays.get(i).name)==0)
{
System.out.println("asdf found array");
break;
}
}
这是我用来比较它们的代码。当然有一个程序,但它真的很长,所以我不想压倒任何人。希望这只是一个愚蠢的错误。
让我感到非常恼火的是,如果我只是忽略循环并将currToken与arrays.get(0).name本身进行比较,那么结果为0,这意味着它是真的。然而,当它进入循环并完成同样的事情时,它似乎无法正常工作。
&#34;阵列&#34;是包含ArraySymbol对象的LinkedList,我在下面提供了它的类。如果有人能够指出我做错了什么,我真的很感激它!
package apps;
/**
* This class encapsulates a (name, array of integer values) pair for an array variable.
* The name is a sequence of one or more letters.
*
*
*/
public class ArraySymbol {
/**
* Name, sequence of letters
*/
public String name;
/**
* Array of integer values
*/
public int[] values;
/**
* Initializes this symbol with given name, and sets values to null.
*
* @param name Name of array
*/
public ArraySymbol(String name) {
this.name = name;
values = null;
}
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
public String toString() {
if (values == null || values.length == 0) {
return name + "=[ ]";
}
StringBuilder sb = new StringBuilder();
sb.append(name);
sb.append("=[");
sb.append(values[0]);
for (int i=1; i < values.length; i++) {
sb.append(',');
sb.append(values[i]);
}
sb.append(']');
return sb.toString();
}
/* (non-Javadoc)
* @see java.lang.Object#equals(java.lang.Object)
*/
public boolean equals(Object o) {
if (o == null || !(o instanceof ArraySymbol)) {
return false;
}
ArraySymbol as = (ArraySymbol)o;
return name.equals(as.name);
}
}