当我创建一个LinkedList并插入一个新元素时,每次都会插入新元素,但是当我将元素出列时,我只得到最后插入的元素。我的代码在JAVA中是这样的。
import java.io.*;
import java.util.*;
import java.lang.*;
public class Main {
public static void main(String[] args) throws IOException {
int i,j,k,l,m,n,t;
LinkedList q = new LinkedList();
arc c = new arc();
c.start = 1;
c.end =1 ;
q.add(c);
arc d = new arc();
d.start = 2;
d.end = 2;
q.add(d);
arc a1 = (arc) q.get(0);
arc a2 = (arc) q.get(1);
System.out.println(a1.start);
System.out.println(a2.start);
}
public static class arc
{
public static int start;
public static int end;
}
}
所需的输出是1和2,但我得到2和2.有人可以帮助我解决这个问题。谢谢。
答案 0 :(得分:3)
因为您在arc中设置静态变量。静态变量是类变量,而不是实例变量。所以arc的所有实例都会为类变量赋予相同的值。
试试这个:
public static class arc
{
public int start;
public int end;
}
实际上相同的元素没有插入列表中,两个不同的元素(实例)正在列表中插入,但是你要从两个实例中打印类变量值。
答案 1 :(得分:1)
arc类中的字段是静态的。我会开始使用一个好的IDE,比如Eclipse,这样你就会收到类似错误的警告。 此外,您的代码还有很多需要改进的地方。例如,为什么要使用静态弧类?看起来你不打算从外部类外部静态地使用这个类。 您还应该使用泛型并大写arc类的名称。
答案 2 :(得分:0)
从arc类的start和end的定义中删除static,否则start和end将是类级变量。
答案 3 :(得分:0)
看看你的代码:
public static class arc
{
public static int start;
public static int end;
}
您的开始和结束变量是静态的,因此任何弧对象只有一个开始和结束变量。
只需删除静态修改器,它就可以工作。
答案 4 :(得分:0)
您正在使用静态变量进行开始和结束。将两个类分成两个源文件并删除静态:
public class Lala {
public static void main(String[] args) throws IOException {
int i, j, k, l, m, n, t;
LinkedList q = new LinkedList();
arc c = new arc();
c.start = 1;
c.end = 1;
q.add(c);
arc d = new arc();
d.start = 2;
d.end = 2;
q.add(d);
arc a1 = (arc) q.get(0);
arc a2 = (arc) q.get(1);
System.out.println(a1.start);
System.out.println(a2.start);
}
}
arc.java:
public class arc
{
public int start;
public int end;
}