我的代码假设创建便利贴并编写消息,一天中的时间并计数对象。 (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。
答案 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
删除静态计数器,因为它实际上并没有像定义变量那样有用。这就是存在List
或Array
之类的原因的原因。我只是稍微修改了您的代码,这是我的方法:
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());
}
}