Java: Как создать комнату с людьми, имеющими случайные дни рождения?
Это мой второй день на Java. Я наткнулся на интересный вопрос о парадоксе дня рождения.
- Генерация случайного дня рождения.
- Создайте человека со случайным днем рождения.
- Создайте функцию, чтобы проверить, имеют ли два человека одинаковый день рождения.
- Создать комнату с заданным количеством человек n.
- Создайте функцию, чтобы проверить, имеют ли по крайней мере два человека в комнате один и тот же день рождения.
Тем не менее, я застрял в том, как создать "Комнату" с "людьми", а затем сравнить дни рождения людей.
Кто-нибудь знает как это сделать?
Спасибо за ваши усилия и время!:)
class Person {
int age;
}
class Room {
int Person;
}
public class BirthdayParadox {
public static void main(String[] args) {
int x = (int) (Math.random() * 364);
int y = (int) (Math.random() * 364);
long r = Math.round(x);
long s = Math.round(y);
Person person1 = new Person();
person1.age = (int) r;
Person person2 = new Person();
person2.age = (int) s;
if (person1.age == person2.age) {
System.out.println("Same!");
}
else if (person1.age != person2.age) {
System.out.println(person1.age + " " + person2.age);
}
}
}
2 ответа
Ваш
Room
класс, вероятно, должен содержатьList<Person>
или массив Person (Person[]).Конструктор
Person
должен принятьdateOfBirth
параметр, или, чтобы сделать его более простым, вы можете принять целое число от 1 до 365, которое представляет дату дня рождения, не включая год, так как это все, что вас волнует. Не звони этому участникуage
, поскольку это никак не связано с возрастом.Вы хотите использовать
(int)(Math.random() * 365) + 1
что даст вам целые числа от 1 до 365. Вам не нужно использоватьMath.round()
,
Для этого все, что вам нужно, это массив целых чисел, где каждый индекс содержит день рождения одного человека.
Например, чтобы сохранить дни рождения 10 человек, вы должны создать целочисленный массив размером 10.
int[] birthdays = new int[10];
Вы можете присвоить значение индексу массива следующим образом:
birthdays[2] = (int)(Math.random() * 364);
Приведенный выше код назначит случайному значению день рождения третьего лица.
Чтобы получить день рождения человека, используйте код, подобный следующему:
birthdays[1]
Таким образом, чтобы напечатать день рождения 5-го человека, вы должны использовать
System.out.println(birthdays[4]);
Помните, что массивы индексируются 0, что означает, что первое значение равно 0, а последнее - (размер - 1). Так, например, 6-й элемент имеет индекс 5.