Я не знаю, как правильно инкапсулировать переменную сканера.
Требования: Создайте класс HeartRates.
Атрибуты класса должны включать имя и фамилию человека. имя и дата рождения (состоящие из отдельных атрибутов месяца, дня и года рождения). В вашем классе должен быть конструктор, который получает эти данные в качестве параметров. Для каждого атрибута предоставьте методы set и get. Класс также должен включать метод, который вычисляет и возвращает возраст человека (в годах), метод, который вычисляет и возвращает максимальную частоту сердечных сокращений человека, и метод, который вычисляет и возвращает целевую частоту сердечных сокращений человека. Напишите Java-приложение, которое запрашивает информацию о человеке, создает экземпляр объекта класса HeartRates и печатает информацию из этого объекта, включая имя, фамилию и дату рождения человека, а затем вычисляет и печатает возраст человека в (годах), максимум частота сердечных сокращений и диапазон целевой частоты сердечных сокращений.
Я запутался: если я предлагаю пользователю ввести свое имя, я фиксирую его с помощью String firstName = Scanner.nextLine(); ...безопасен ли этот объект сканера? Я знаю, что информация хранится в моем классе HeartRate, но разве она не хранится и в основном методе внутри firstName? Я понимаю, что целью инкапсуляции является сохранение конфиденциальности переменных, но разве переменная firstName внутри основного метода не является частной?
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Please enter your first name: ");
String firstName = scanner.nextLine();
System.out.println("Please enter your last name: ");
String lastName = scanner.nextLine();
System.out.println("Please enter your birth month (1-12): ");
int birthMonth = scanner.nextInt();
System.out.println("Please enter your birth day (1-31): ");
int birthDay = scanner.nextInt();
System.out.println("Please enter the year you were born (yyyy): ");
int birthYear = scanner.nextInt();
HeartRate heartRate = new HeartRate(firstName, lastName, birthMonth, birthDay, birthYear);
heartRate.setFirstName(firstName); // Use setter methods to set the values
heartRate.setLastName(lastName);
heartRate.setBirthMonth(birthMonth);
heartRate.setBirthDay(birthDay);
heartRate.setBirthYear(birthYear);
System.out.println("First Name: "+heartRate.getFirstName());
System.out.println("Last name: "+heartRate.getLastName());
System.out.println("Birth Date: "+heartRate.getBirthMonth()+"/"+heartRate.getBirthDay()+"/"+heartRate.getBirthYear());
System.out.println("Age: "+heartRate.calculateAge());
System.out.println("Max Heart Rate: " +heartRate.calculateMaxHeartRate());
System.out.println("Target Heart Rate: "+heartRate.calculateTargetHeartRate());
}
}
Класс HeartRate:
import java.time.Period;
public class HeartRate {
private String firstName;
private String lastName;
private int birthDay;
private int birthMonth;
private int birthYear;
public HeartRate(String firstname, String lastName, int birthMonth, int birthDay, int birthYear) {
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public void setBirthDay(int birthDay) {
this.birthDay = birthDay;
}
public void setBirthMonth(int birthMonth) {
this.birthMonth = birthMonth;
}
public void setBirthYear(int birthYear) {
this.birthYear = birthYear;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public int getBirthDay() {
return birthDay;
}
public int getBirthMonth() {
return birthMonth;
}
public int getBirthYear() {
return birthYear;
}
public int calculateAge() {
LocalDate today = LocalDate.now();
LocalDate birthday = LocalDate.of(birthYear, birthMonth, birthDay);
Period age = Period.between(birthday, today);
return age.getYears();
}
public int calculateMaxHeartRate() {
return 220 - calculateAge();
}
public String calculateTargetHeartRate() {
int maxHeartRate = calculateMaxHeartRate();
int lowerBound = (int) (maxHeartRate*.8);
int upperBound = (int) (maxHeartRate*.5);
return lowerBound+" - "+upperBound;
}
}
Подробнее здесь: https://stackoverflow.com/questions/785 ... m-the-user
Как инкапсулировать входные данные сканера от пользователя? ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1716241308
Anonymous
Я не знаю, как правильно инкапсулировать переменную сканера.
Требования: Создайте класс HeartRates.
Атрибуты класса должны включать имя и фамилию человека. имя и дата рождения (состоящие из отдельных атрибутов месяца, дня и года рождения). В вашем классе должен быть конструктор, который получает эти данные в качестве параметров. Для каждого атрибута предоставьте методы set и get. Класс также должен включать метод, который вычисляет и возвращает возраст человека (в годах), метод, который вычисляет и возвращает максимальную частоту сердечных сокращений человека, и метод, который вычисляет и возвращает целевую частоту сердечных сокращений человека. Напишите Java-приложение, которое запрашивает информацию о человеке, создает экземпляр объекта класса HeartRates и печатает информацию из этого объекта, включая имя, фамилию и дату рождения человека, а затем вычисляет и печатает возраст человека в (годах), максимум частота сердечных сокращений и диапазон целевой частоты сердечных сокращений.
Я запутался: если я предлагаю пользователю ввести свое имя, я фиксирую его с помощью String firstName = Scanner.nextLine(); ...безопасен ли этот объект сканера? Я знаю, что информация хранится в моем классе HeartRate, но разве она не хранится и в основном методе внутри firstName? Я понимаю, что целью инкапсуляции является сохранение конфиденциальности переменных, но разве переменная firstName внутри основного метода не является частной?
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Please enter your first name: ");
String firstName = scanner.nextLine();
System.out.println("Please enter your last name: ");
String lastName = scanner.nextLine();
System.out.println("Please enter your birth month (1-12): ");
int birthMonth = scanner.nextInt();
System.out.println("Please enter your birth day (1-31): ");
int birthDay = scanner.nextInt();
System.out.println("Please enter the year you were born (yyyy): ");
int birthYear = scanner.nextInt();
HeartRate heartRate = new HeartRate(firstName, lastName, birthMonth, birthDay, birthYear);
heartRate.setFirstName(firstName); // Use setter methods to set the values
heartRate.setLastName(lastName);
heartRate.setBirthMonth(birthMonth);
heartRate.setBirthDay(birthDay);
heartRate.setBirthYear(birthYear);
System.out.println("First Name: "+heartRate.getFirstName());
System.out.println("Last name: "+heartRate.getLastName());
System.out.println("Birth Date: "+heartRate.getBirthMonth()+"/"+heartRate.getBirthDay()+"/"+heartRate.getBirthYear());
System.out.println("Age: "+heartRate.calculateAge());
System.out.println("Max Heart Rate: " +heartRate.calculateMaxHeartRate());
System.out.println("Target Heart Rate: "+heartRate.calculateTargetHeartRate());
}
}
Класс HeartRate:
import java.time.Period;
public class HeartRate {
private String firstName;
private String lastName;
private int birthDay;
private int birthMonth;
private int birthYear;
public HeartRate(String firstname, String lastName, int birthMonth, int birthDay, int birthYear) {
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public void setBirthDay(int birthDay) {
this.birthDay = birthDay;
}
public void setBirthMonth(int birthMonth) {
this.birthMonth = birthMonth;
}
public void setBirthYear(int birthYear) {
this.birthYear = birthYear;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public int getBirthDay() {
return birthDay;
}
public int getBirthMonth() {
return birthMonth;
}
public int getBirthYear() {
return birthYear;
}
public int calculateAge() {
LocalDate today = LocalDate.now();
LocalDate birthday = LocalDate.of(birthYear, birthMonth, birthDay);
Period age = Period.between(birthday, today);
return age.getYears();
}
public int calculateMaxHeartRate() {
return 220 - calculateAge();
}
public String calculateTargetHeartRate() {
int maxHeartRate = calculateMaxHeartRate();
int lowerBound = (int) (maxHeartRate*.8);
int upperBound = (int) (maxHeartRate*.5);
return lowerBound+" - "+upperBound;
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78508658/how-do-i-encapsulate-a-scanner-input-from-the-user[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия