1

这是我学习 Java 的第二天。我遇到了一个关于生日悖论的有趣问题。

  1. 生成随机生日。
  2. 创建一个随机生日的人。
  3. 构建一个函数来检查两个人是否有相同的生日。
  4. 创建一个具有给定人数 n 的房间。
  5. 构建一个函数来检查房间中是否至少有两个人的生日相同。

但是,我被困在如何用“人”创建一个“房间”,然后比较这些人的生日。

有谁知道如何做到这一点?

感谢您的努力和时间!:)

    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);
        }

    }

    }
4

2 回答 2

2
  1. 您的Room类可能应该包含一个List<Person>或一组 Person (Person[])。

  2. 的构造函数Person应该接受一个dateOfBirth参数,或者,为了更简单,您可以接受一个介于 1 和 365 之间的整数,它表示生日的日期,不包括年份,因为这就是您所关心的。不要打电话给那个成员age,因为它与年龄无关。

  3. 您想使用(int)(Math.random() * 365) + 1,这将为您提供 1 到 365 之间的整数。您不需要使用Math.round().

于 2014-10-04T18:29:47.113 回答
-1

为此,您只需要一个整数数组,每个索引包含一个人的生日。

例如,要保存 10 个人的生日,您将创建一个大小为 10 的整数数组。

int[] birthdays = new int[10];

您可以使用以下方法为数组的索引赋值:

birthdays[2] = (int)(Math.random() * 364);

上面的代码会将第三个人的生日分配给一个随机值。

要获取一个人的生日,请使用与以下类似的代码:

birthdays[1]

因此,要打印第 5 个人的生日,您可以使用

System.out.println(birthdays[4]);

请记住,数组是 0 索引的,这意味着第一个值为 0,最后一个值为 (size - 1)。例如,第 6 个元素位于索引 5 处。

于 2014-10-04T18:32:12.780 回答