Java. Сделайте программу для фитнес-трекера, которая будет регистрировать нового пользователя, создавая ему учетную запись, принимая следующие параметры:
Неизменные (задаются только при создании аккаунта, и могут быть получены только с помощью гетер):
Имя
Дата рождения (отдельно день, месяц, год)
Эмейл
Телефон
Изменяемые:
Фамилия
Вес
Давление
Количество пройденных за день шагов
Создавать каждого пользователя необходимо через конструктор, принимая все поля на вход конструктора.
Добавить метод printAccountInfo(), при вызове которого печатать все данные о пользователе
После приема года рождения - высчитывать возраст пользователя во внутреннюю переменную age (отталкиваясь просто от 2020 года, усложнять здесь не будем), на которую сделать только геттер и выводить на экран вместе с другими полями в методе printAccountInfo(); в конструкторе или геттерах/сеттерах не используем вывод в консоль.
В main-классе создать 3-5 пользователей и распечатать данные каждого по вызову метода printAccountInfo(); для двух пользователей изменить несколько полей и распечатать новые данные повторно
Ответы
Ответ:
import java.time.LocalDate;
import java.time.Period;
public class User {
private String name;
private LocalDate birthday;
private String email;
private String phone;
private String surname;
private int weight;
private int pressure;
private int steps;
private int age;
public User(String name, LocalDate birthday, String email, String phone, String surname, int weight, int pressure, int steps) {
this.name = name;
this.birthday = birthday;
this.email = email;
this.phone = phone;
this.surname = surname;
this.weight = weight;
this.pressure = pressure;
this.steps = steps;
this.age = Period.between(birthday, LocalDate.now()).getYears();
}
public String getName() {
return name;
}
public LocalDate getBirthday() {
return birthday;
}
public String getEmail() {
return email;
}
public String getPhone() {
return phone;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
this.weight = weight;
}
public int getPressure() {
return pressure;
}
public void setPressure(int pressure) {
this.pressure = pressure;
}
public int getSteps() {
return steps;
}
public void setSteps(int steps) {
this.steps = steps;
}
public int getAge() {
return age;
}
public void printAccountInfo() {
System.out.println("Name: " + name);
System.out.println("Surname: " + surname);
System.out.println("Birthday: " + birthday);
System.out.println("Age: " + age);
System.out.println("Email: " + email);
System.out.println("Phone: " + phone);
System.out.println("Weight: " + weight);
System.out.println("Pressure: " + pressure);
System.out.println("Steps: " + steps);
}
}
public static void main(String[] args) {
LocalDate birthday1 = LocalDate.of(1995, 4, 14);
User user1 = new User("John", birthday1, "[email protected]", "123456", "Doe", 80, 120, 10000);
LocalDate birthday2 = LocalDate.of(1988, 7, 22);
User user2 = new User("Jane", birthday2, "[email protected]", "654321", "Doe", 60, 110, 8000);
user1.printAccountInfo();
user2.printAccountInfo();
// Изменение параметров для двух пользователей
user1.setSurname("Smith");
user1.setWeight(85);
user1.setPressure(125);
user1.setSteps(12000);
user2.setSurname("Johnson");
user2.setWeight(65);
user2.setPressure(115);
user2.setSteps(9000);
// Печать информации о пользователях
user1.printAccountInfo();
user2.printAccountInfo();
}
User user2 = new User("Jane", birthday2, "[email protected]", "654321", "Doe", 60, 110, 8000);
эти две строчки выделены и выдает такую ошибку, как можно исправить?
java: non-static variable this cannot be referenced from a static context
java: non-static variable this cannot be referenced from a static context