public class MyList{
private Object[] data;
private int index=0;
public MyList(int size){
data=new Object[size];
}
private void expand(){
Object[] data2=new Object[data.length*2];
System.arraycopy(data,0,data2,0,data.length);
data=data2;
}
public void add(Object o){
if (data.length==index) expand();
data[index]=o;
index++;
}
public void add(int pos,Object o){
if (data.length==index) expand();
for(int i=index;i>pos;i--){
data[i]=data[i-1];
}
data[pos]=o;
index++;
}

public void change(int pos,Object o){
data[pos]=o;
}

public Object remove(int pos){
Object o=data[pos];
index--;
for(int i=pos;i<index;i++){
data[i]=data[i+1];
}
return o;
}
public int size(){
return index;
}
public Object get(int pos){
return data[pos];
}
public void clear(){
index=0;
}
public boolean isEmpty(){
return index==0;
}
public Object[] toArray(){
return data;
}
}public class MemoryTest {
private static MyList list ;
/*
 * 判断内存是否存在
 */
public static boolean findMemory(int a){
String s=Integer.toString(a);

for(int i=0;i<list.size();i++){
Object o=list.get(i);
if (o.equals(s)){ //这地方判断一直不对?为什么?
return true;
}
}
return false;
}
public static void disPlay(){
for(int i=list.size()-1;i>=0;i-- ){
Object o=list.get(i);
System.out.println(i+"   "+o);
}
}
public static void main(String[] args) throws IOException {
/*
 * 创建内存
 */
System.out.print("输入内存块数>");
int memory_i=Util.keyReadInt();
list=new MyList(memory_i); for(int i=0;i<memory_i;i++){
list.add(i);
}


disPlay();
list.change(2, 8);
System.out.println("========");
disPlay();
System.out.println(findMemory(8));   //一直返回的是false
}
}

解决方案 »

  1.   

    不对的地方倒过来,用
    s.equals(o);
    试试的。。
      

  2.   

    你比较不对的地方,是因为类型不匹配。你自己的链表理加入的是int,而findMemory方法传过来的参数也是int,
    你却把int转成String再做比较,怎么可能相等呢?这部分代码:
    Object o=list.get(i); 
    if (o.equals(s)){ //这地方判断一直不对?为什么? 
    return true; 

    改成:Integer o = (Integer)list.get(i);
    if (o==a) { 
    return true;
    }