使用静态变量在课堂上数数

时间:2018-12-03 17:20:35

标签: java class counter

我的代码假设创建便利贴并编写消息,一天中的时间并计数对象。 (post1,post2,post3等)

import java.time.LocalTime;

public class Post_it {
    private String note;
    static int number=0;

    private LocalTime ltime; 

    public Post_it(String note_, LocalTime time) {
        this.note = note_;
        this.ltime = time;
        number++;
    }
}

我尝试使用

进行打印
public static void main(String[] args) {

    Post_it post1 = new Post_it("Text text text");
    Post_it post2 = new Post_it("Text Text");
    Post_it post3 = new Post_it("Text");

    System.out.println(Post_it.numbers);
}

但是我无法打印它,它抱怨Post_it.numbers。可以打印post1.numbers,但是即使我打印post2.numbers,我也总是得到0。

1 个答案:

答案 0 :(得分:0)

正如注释中已经arkascha所述,每次创建新对象时,计数器都会覆盖。但这不是代码中的唯一错误。

您将收到以下错误:The constructor Post_it(String) is undefined,这意味着编译器无法找到Post_it为唯一参数的String的构造函数。

您可以通过在构造函数调用中添加LocalTime来解决此问题:

new Post_it("Text text text", LocalTime.now())

现在到计数器了-您已将变量定义为number,但是访问Post_it.numbers并不完全正确。显然必须是Post_it.number

但是,您可以使用List删除静态计数器,因为它实际上并没有像定义变量那样有用。这就是存在ListArray之类的原因的原因。我只是稍微修改了您的代码,这是我的方法:

import java.time.LocalTime;
import java.util.ArrayList;
import java.util.List;

public class Post_it
{
private String note;

private LocalTime time;

public Post_it(String note, LocalTime time)
{
    this.note = note;
    this.time = time;
}

public static void main(String[] args)
{
    List<Post_it> posts = new ArrayList<>();
    posts.add(new Post_it("Text text text", LocalTime.now()));
    posts.add(new Post_it("Text Text", LocalTime.now()));
    posts.add(new Post_it("Text", LocalTime.now()));
    System.out.println(posts.size());
}

}