quilt code

[Java] 참조타입 과제 본문

daily/Java

[Java] 참조타입 과제

김뱅쇼 2023. 1. 2. 20:27

1.

다음 배열에서 최댓값과 최솟값을 구하시오.
{38, 94, 16, 3, 76, 94, 82, 47, 59, 8}
 

 

 

int[] arr = {38, 94, 16, 3, 76, 94, 82, 47, 59, 8};   >> 우선 배열을 나열함

int max=0;

int min=arr[0];      >>max min선언  int min=0;이면 0이 모든 값보다 항상 작기 때문에 x. 배열 중 가장 큰 값보다 더 큰 값을 넣거나 arr[0](배열 중 첫번째) 입력

 

for (int i=0; i<arr.length; i++){      >>배열 길이만큼 i=0부터 하나씩 증가하는 것을 반복

    if (max<arr[i]) {        

      max = arr[i]    >>max값을 0과 arr[0]부터 비교해서 큰 값이 나올때마다 max값 교체

    } if (min>arr[i]) {

      min = arr[i]    >>min값을 arr[0]의 값부터 비교해서 작은 값이 나올때마다 min값 교체

    }

 

2. 로또번호를 생성하는 프로그램을 작성하시오.(로또 번호는 1 ~ 45번까지 있으며 이 중에서 중복되지 않는 6개의 숫자를 추출하여 결과를 출력한다.)

Random random = new Random();  >>랜덤 생성

int lotto[] = new int[6];    >>6개의 숫자 뽑기

 

for(int i=0; i<6;  i++) {         >> 6개의 숫자를 뽑는데 

  lotto[i] = random.nextInt(45)+1;    >> 1부터 45까지의 숫자 

     for(int k=0; k<i; k++) {                 >> 중복되지 않는 숫자 뽑기 조건

        if(lotto[i] == lotto[k]) {                 >> 중복되는 숫자가 나왔다면 

             i--;                                       >> 중복 방지 : i++해서 자리 채우지 x 

              break;                                 >> break에 걸리고 다시 for로 돌아가서 반복            

          }

    }

   print(lotto[i]+"")

 

다른방법) 45칸의 배열을 만들어서 숫자를 섞고 뽑기

**원리: int x=3; <-> int y=4;

 

 

3. 인공지능 컴퓨터와 게이머(사람)가 가위바위보 게임을 할 수 있도록 프로그램을 작성하시오.

new scanner   >>스캐너 생성

String rspUser = scanner.nextLine();          >>유저가 입력하는 가위바위보

print("게이머: "+ rspUser);

 

new random              >>랜덤 생성 (컴퓨터 난수 발생기)

int rspCom = random.nextInt(3);    >>컴퓨터가 만들어내는 랜덤의 숫자 1,2,3(가위,바위,보)

String[] arr = { "가위", "바위", "보" };     >> 문자 배열 만들기 

print("인공지능 컴퓨터: " + arr[rspCom]);     >>랜덤으로 발생하는 숫자들을 배열로 출력 

 

String result = "  ";              >> result값 선언

 

if(rspUser.equals(arr[rspCom])) {        >> 유저와 컴퓨터가 같으면

      result = "비김";      >>비김으로 출력

   } else if (rspUser.equals("가위") && arr[rspCom].equals("바위")   >>유저는 가위, 컴퓨터가 발생시킨 난수의 값이 바위이거나

       || rspUser.equals("바위") && arr[rspCom].equlas("보")   >> 유저는 바위 컴퓨터는 보이거나

       || rspUser.equals("보") && arr[rspCom].equals("가위")) {  >>유저는 보 컴퓨터는 가위이면 

        result = "게이머 승리";

    } else {         >>그 외는 모두 다음 result의 값

          result = "컴퓨터 승리";

    } 

     print ("결과: " + result);

 

 

4.

주사위를 던져서 각 면이 나오는 횟수를 출력하는 프로그램을 만들어 보자. 주사위를 던지는 동작은 1부터 6까지의 임의로 만들어내는 난수 발생기(Random 객체)가 대신한다. 난수 발생기를 10,000번 호출하여 각 면이 나타나는 횟수를 계산하여 배열에 저장한다. 확률 이론에 의하면 주사위의 각각의 면들이 거의 동일한 횟수로 나와야 한다.
아래 그림과 똑같은 값이 나오지 않고 컴퓨터마다 값이 다르게 나오는 것이 정상이다.
 

new Random     >>난수 발생

int dice = random.nextInt(6) + 1;

int[] freq = new int[6];

 

print ("-----------")

print ("면    빈도")

print ("-----------")

 

for(int i=0; i<10000; i++) {                    >>주사위 만번 굴리기

     dice = random.nextInt(6) + 1;        >>

    if(dice == 1) {                 >> 주사위 면이 1이 나오면

              freq[0]++;             >>freq배열 첫번째 자리에 1 증가

 

     } else if(dice == 2) {          >> 주사위 면이 2가 나오면

              freq[1]++;                  >>freq배열 두번째 자리에 1증가

 

     } else if(dice == 3) {           >> 주사위 면이 3이 나오면        

               freq[2]++;                 >>freq배열 세번째 자리에 1증가

 

     } else if(dice == 4)          >> 주사위 면이 4가 나오면

               freq[3]++;                 >>freq배열 네번째 자리에 1증가

 

     } else if(dice == 5) {           >> 주사위 면이 5가 나오면  

               freq[4]++;                 >>freq배열 다섯번째 자리에 1증가

 

      } else if(dice == 6) {          >> 주사위 면이 6이 나오면

                freq[5]++;                 >>freq배열 여섯번째 자리에 1증가

   } 
}
 
for(int i = 0; i < freq.length; i++) {      >> for문 출력 freq 배열의 길이
     print( (i+1) + "\t" + freq[i]);    >>

 

\t: tab 
\n: 줄바꿈

 

 

'daily > Java' 카테고리의 다른 글

[Java] 클래스 (2)  (0) 2023.01.03
[Java] 클래스(1)  (0) 2023.01.02
[Java] 열거 타입  (0) 2022.12.30
[Java] 조건문과 반복문 과제  (0) 2022.12.29
[Java] 참조타입-배열  (0) 2022.12.29