以下是我的测试程序,不知道为什么我输入的是map.x和map.y的值,然后打印出来的时候老是5,我输入的是0-4呀,谁帮我解决一下。还有为什么这里面的都需要用静态的方法和变量呢?
不用不行么???
public class Mapnode{
public static int x,y;
}import java.util.LinkedList;
public class test{
    public static Mapnode map,node;
public static void main(String args[]){
       LinkedList link=new LinkedList();
       for(int i=0;i<5;i++){
        map=null;
       map.x=i;
       map.y=i+1;
       System.out.print(i+" ");
       System.out.print(map.x+" ");
       link.add(map);
      // link=link.next;
       System.out.println(((Mapnode)(link.getLast())).x);
}
while(link.size()!=0){
System.out.println();
//System.out.println(link.size());
 System.out.println();
 node=(Mapnode)link.getFirst();
System.out.println(node.y);
if(link.remove(node)) ;
System.out.println("ok");
}
}
}

解决方案 »

  1.   

    因为你是静态变量,一个类共享静态变量的,
    也就是所有的Mapnode对象的i、j是共享的,你for循环结束之后j是5了,输出当然全都是5 了
    还有map.i这样的写法好像不提倡的,应该是Mapnode.i,这样你就更能明白了i是类Mapnode的
      

  2.   

    public class Mapnode{
        public  int x,y;
    }public class Test {    public static void main(String args[]) {
            Mapnode map, node;
            LinkedList link = new LinkedList();
            for (int i = 0; i < 5; i++) {
                map = new Mapnode();
                map.x = i;
                map.y = i + 1;
                System.out.print(i + " ");
                System.out.print(map.x + " ");
                link.add(map);
                map = nu
                System.out.println(((Mapnode) (link.getLast())).x);
            }        while (link.size() != 0) {
                node = (Mapnode) link.removeFirst();
                System.out.println(node.y);
            }
        }
    }
      

  3.   

    哎,楼上的都说清楚了,我没啥可说的,这里注意static的使用