1

자바에서 두 번째 날입니다. 나는 생일 Paradox에 관한 흥미로운 질문을 발견했다.자바 : 임의의 생일을 가진 사람들과 함께 방을 만드는 방법은 무엇입니까?

  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

"너무 광범위하게"닫혀 있던 이전 질문과 어떻게 다른가요? –

답변

2
  1. 귀하의 Room 클래스는 아마도 사람의 List<Person> 또는 배열 (인 [])를 포함해야합니다. 그게 당신이 걱정하는 모든 이후

  2. Person의 생성자는, 당신은 올해를 포함하지 않는 생일의 날짜를 나타내는 1과 365 사이의 정수를 받아 들일 수, 더 간단하게하기 위해, dateOfBirth 매개 변수를 적용하거나한다 . 그 사람에게 전화하지 마십시오 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); 

위의 코드는 제 3 자의 생일을 임의의 값으로 지정합니다.

사람의 생일을 얻으려면 다음과 유사한 코드를 사용

birthdays[1] 

을 그래서, 5 사람의 생일을 인쇄하려면, 당신은 배열이라는 것을 기억

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

을 사용 0 -indexed는 첫 번째 값이 0이고 마지막 값이 (size - 1)임을 의미합니다. 예를 들어 여섯 번째 요소는 인덱스 5에 있습니다.

관련 문제