我是Java的新手。我不确定为什么行my2.print_list();
仅打印对象my2
。我想每次打印整个对象列表。我将每个对象添加到构造函数中的列表中。我90%确信函数for
中的print_list
循环是好的。编译器显示没有问题。我将感谢您的帮助。
public class Main {
public static void main(String[] args) {
// write your code here
rectangle my = new rectangle(5);
rectangle my1 = new rectangle(3,6);
rectangle my2 = new rectangle(10,7);
System.out.println( my2.getCounter());
my2.print_list(); ////////////////////<- described line
}
}
///我的课堂矩形
import java.util.ArrayList;
import java.util.List;
public class rectangle {
public static int counter =0;
public int x;
public int y;
public List<rectangle> List = new ArrayList<rectangle>();
public rectangle(int x, int y) {
this.x = x;
this.y = y;
System.out.println("Rec");
List.add(this);
counter++;
}
public rectangle(int x) {
this.x = x;
this.y = x;
System.out.println("Sqr");
List.add(this);
counter++;
}
@Override
public String toString() {
return "x->"+x+" y->"+y+" Field: "+(x*y);
}
public void print_list()
{
for(rectangle x : List)
{
System.out.println(x);
}
}
答案 0 :(得分:0)
您的课程的每个实例都有其自己的实例List
。如果应该共享,请设置为static
(这是填充List
的唯一方法)。另外,请重命名变量List
(它看起来与接口java.util.List
完全一样,完全)。另外,没有理由将其设置为public
。
private static List<rectangle> myList = new ArrayList<rectangle>();
然后像这样更改print_list
public void printList()
{
for(rectangle x : myList)
{
System.out.println(x);
}
}
此外,类名称应为Rectangle
(遵循Java命名约定)。
答案 1 :(得分:0)
更改
public List<rectangle> List = new ArrayList<rectangle>();
到
public static List<rectangle> List = new ArrayList<rectangle>();
所以只有一个List实例。