Подсчет в классе со статической переменной - PullRequest
0 голосов
/ 03 декабря 2018

Мой код предполагает создание заметок и запись сообщений, время суток и подсчет объектов.(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, но тогда я всегда получаю 0, даже если я печатаю post2.numbers.

1 Ответ

0 голосов
/ 03 декабря 2018

Как уже отмечалось в комментариях 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());
}

}

...