개발 공부중

[TIL] 문제연습 (Math.random(), 한 줄에 10개씩 출력하기) 본문

JAVA

[TIL] 문제연습 (Math.random(), 한 줄에 10개씩 출력하기)

개발자 leelee 2022. 12. 15. 23:42

문제1

import java.util.Arrays;

/* 연습문제1
 * -10에서 10사이의 정수 10개를 랜덤하게 채번하여  음수와 양수의 합계를 구하는 프로그램을 작성하시오.
출력)
배열 : 9 -2 -3 8 0 -3 -8 -6 -2 0
음수합 : -24
양수합 : 17
 */
public class Quiz_2 {
    public static void main(String[] args) {
        int plushap= 0;
        int minushap=0;
        int users[] = new int[10];
        for(int i =0; i <users.length; i++){
            users[i] = (int)(Math.random()*21)%20-10; //★-10 ~ 10 사이의 정수를 랜덤 수집
            if(users[i]>0){
                plushap = users[i] + plushap;
            }else{
                minushap = users[i] + minushap;
            }
        }
        System.out.println(Arrays.toString(users));
        System.out.println("음수합" + minushap);
        System.out.println("음수합" + plushap);
    }
}

문제1의 포인트는 Math.random() 함수의 사용방법

 

Math.random() 함수는 0~ 1 사이의 실수를 반환함. (0<= x <1 ( 0.9999) ) 

소수점이라 정수의 값을 구하고 싶을 때는 *10 을 하고 (int)를 사용해서 소수점 이하를 버림하면 됨. ( 0 <= x < 10 (9.9999))

최소값을 지정하고 싶을 때는 Math.random() * (max - min + 1) 값을 계산하고, 소수점 이하를 버림.

 

 

문제2

import java.util.Arrays;
import java.util.Random;

/*
 * 연습문제 2
 * 0 부터 9사이의 임의의 수를 100개를 채번하여 한 줄에 10개씩
 * 출력하고 그 숫자의 빈도수를 계산하여 출력하시오
 * 원본 : 0 1 2 3 4 5 6 7 8 9
 * 2 5 6 8 7 8 9 0 1 1
 * 5 ...
 * 3 ... 
 * 3 ...
 * 7 ...
 * 9 ...
 * 2 ...
 * 0 4 5 6 6 7 8 8 9 9
 * 숫자 : 0 1 2 3 4 5 6 7 8 9
 * 갯수 : 10 9 18 11 7 9 15 14 7 5 
 */
public class Quiz_3 {
    public static void main(String[] args) {
        int arr[] = new int [100];
        int count[] = new int[10];
        for(int i =1; i<arr.length+1; i++){
            arr[i-1] = (int)(Math.random() * 10);
            System.out.print(arr[i-1]);
            if(i % 10 == 0 & i != 0){
                System.out.println();
            } 
            for(int j = 0; j<count.length; j++){
                if(arr[i-1] == j){
                count[j] = count[j] +1;
                }
            }
        }
        System.out.println("숫자 : 0 1 2 3 4 5 6 7 8 9");
        System.out.println("갯수 : " + Arrays.toString(count));
    }
    
}

문제2의 포인트는 한 줄에 n개씩 출력하는 방법, 생각보다 오래 걸렸다.

처음에 if(i % 10 == 0) 로 실행해서 0번째 값만 하나 빠져나오는 건 if(i % 10 == 0 & i != 0) 로 해결

for(int i =0; i<arr.length; i++) ~~ 로 실행해서 첫 줄만 10개 출력 나머지는 9개 출력이 되는 상황은

for(int i =1; i<arr.length+1; i++) 로 해결! 조금 꼼수 같긴하지만ㅠㅋㅋㅋ

 

그리고 빈도수를 계산 하는 건 2중 for문으로 해결

'JAVA' 카테고리의 다른 글

InputStream/OutputStream를 이용해서 화면 저장하기  (0) 2023.01.16
[TIL] Vector와 ArrayList  (1) 2022.12.22
[TIL] 문제연습  (0) 2022.12.14
[JAVA] 피보나치 수열 구하기  (0) 2022.12.07
[TIL] 배열  (0) 2022.12.07
Comments