1

这是我在Java上的第二天。我在生日悖论中遇到了一个有趣的问题。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); 
     } 

    } 

    } 
+0

这与您之前提到的问题有什么不同? – 2014-10-04 18:30:45

回答

2
  1. Room类大概应包含一个List<Person>或阵列的人(人[])。

  2. Person构造函数应该接受一个dateOfBirth参数,或者,使其更简单,你可以接受它代表了生日不包括一年的日期1和365之间的整数,因为这是所有你关心。不要致电该会员age,因为它与年龄无关。

  3. 你想使用(int)(Math.random() * 365) + 1,这会给你1到365之间的整数。你不需要使用Math.round()

-1

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

例如,持有10人的生日,你会创建一个大小的整数阵列10

int[] birthdays = new int[10]; 

可以将一个值分配给具有以下的排列的指标:

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

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

为了得到一个人的生日,使用相似的代码如下:

birthdays[1] 

所以,要打印第5人的生日,你会用

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

记住,数组是0 - 索引,这意味着第一个值是0,最后一个是(大小 - 1)。因此,例如,第六个元素位于索引5处。

相关问题