로또 1~45까지 수중 서로 다른 6개의 수를 구매 갯수 만큼 생성하기.

 

import java.util.Scanner;

public class Ex03_Quiz {
	public static void main(String[] args) {
    
    Scanner sc = new Scanner(System.in);
    int[] lotto = new int[6];
    int cnt;
    
    do {
    	System.out.print("구매 개수 ?");
        cnt=sc.nextInt();
    } while (cnt<1 || cnt>5);
    
    for(int i=1; i<=cnt; i++) { // 구매 개수
    	for(int j=0;j<lotto.length; j++){ // 1개를 구매했으면 6개 숫자가 나오고, 2개를 구매했으면 6개x2가 나옴
        	lotto[j] = (int)(Math.random() * 45) + 1; // 배열에 숫자를 넣음
         
            for(int k=0; k<j; k++){ // 숫자가 넣어져있는 배열
            //동일한 난수가 발생되는 경우 다시 추출
            	if(lotto[j]==lotto[k]){ // 그 넣어져있는 숫자가 다음 입력한 숫자와 같으면
                	j--; // 다시 추출
                    break;
                }
            }
        }
        
        System.out.printf(i+"번째 : ");
        for(int n : lotto) {
        	System.out.print(n+"  ")l
            } // 배열 출력
        System.out.println();
    }
    
    
    sc.close();
    }
}

5개의 점수(0~10)을 입력받아 최대점수와 최소점수를 뺀 합을 구하는 프로그램

배열을 활용해서 풀어보자

import java.util.Scanner;

public class Ex02_Quiz {
	public static void main(String[] args) {
    
    Scanner sc = new Scanner(System.in);
    int []score = new int[5];
    int max, min;
    int tot, result;
    
    // 5개의 점수 입력받기 
    // 점수는 0~10
    
    tot = 0;
    for(int i=0; i<5; i++){
    	do {
        System.out.print((i+1)+"번째 점수 : ");
    	score[i] = sc.nextInt();
    	} while (score[i]<0 || score[i]>10);
        tot+=score[i];
    }
    max = min = score[0]; 
    // 가장 처음에 입력받은 점수를 max와 min에 넣고 비교한다.
    for(int i=1; i<score.length; i++){
    	if(min>score[i]){
        	min = score[i];
        } else if(max<score[i]) {
        	max = score[i];
        }
    }
    
    result = tot - min - max;
    
    System.out.print("점수 리스트 : ");
    for(int n: score) {
    System.out.print(n+"  ");
    }
    System.out.print("\n취득 점수 : " + result);
    
    sc.close()
   
    }
}

출처 : 네이버 

출처 : 네이버에 2021년 7월 검색

 

2021년 7월 : 네이버 통합검색

'2021년 7월'의 네이버 통합검색 결과입니다.

search.naver.com

public static void main(String[] args) {
		// 년, 월 입력 받아 달력 만들기
		Scanner sc = new Scanner(System.in);
		int[] months = new int[] {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
		int y, m;
		int tot;
		int w;
		
		do {
			System.out.print("년도 ? ");
			y = sc.nextInt();
		} while(y<1);
		
		do {
			System.out.print("월 ? ");
			m=sc.nextInt();
		} while(m<1 || m>12);
		
		months[1] = (y%4==0 && y%100!=0) || (y%400==1) ? 29 : 28;
		// 윤년이면 2월이 29일 이므로
		tot = (y-1)*365 + (y-1)/4- (y-1)/100 + (y-1)/400; 
		//전체날수
		for(int i=0; i<m-1; i++) {
			tot += months[i];
		}
		tot+= 1;
		// 1년 1월 1일 ~ y년 m월 1일까지 전체 날수
		// 요일 구하기
		w = tot % 7;  // 일~토는 7일 이니까 나누기 7을 하는거.
		System.out.printf("\n\t%d년 %d월\n", y, m);
		System.out.println("   일  월  화   수  목   금   토");
		System.out.println("-------------------------------");
		for(int i=0; i<w; i++) {
			System.out.print("    ");
		} // 첫 주 공백 만들기
		
		for(int i=1; i<=months[m-1]; i++) {
			System.out.printf("%4d", i);
			if(++w % 7 ==0) { // 토요일까지 찍고 행바꾸기
				System.out.println();
			}
		}
		if (w%7 !=0) {
			System.out.println(); // 마지막날이 마지막주 토요일아니면 행바꿔라 
			//아니면 --- 가 마지막 날 옆에 출력
		}
		System.out.println("-------------------------------");
		
		sc.close();
	}

년도가 4의 배수이고 100의 배수가 아니거나 400의 배수이면 2월이 29일, 1년은 366
나머지는 2월이 28일, 1년은 365
서기 1년 1월 1일은 월요일

 

먼저 

1) 1.1.1 ~ 입력한 년.입력한 월.1 

1년 1월 1일 부터 입력한 년의 그 전해 까지의 일수를 구한다. (21년일시 20년 까지의 일수)

 

2) 입력한 년.1.1~입력한 년. 입력한 월.1 

입력한 년 1월 1일 부터 입력한 년의 입력한 월까지의 일수를 구한다. (21년 일시 21년 1월 1일~ 21년 입력한 달까지의 일수)

 

 

 

 

1~10까지 난수를 100개 발생시켜 한 줄에 10개씩 출력하고 마지막에 각 숫자별 발생 횟수를 출력하는 프로그램을 작성

	int num; // 난수를 발생시키기 위한 변수
	int [] count = new int[10]; // 1~10까지 난수의 발생결과의 갯수를 저장하는 곳

	System.out.println("발생된 난수(1~10)...");
	for(int i=1; i<=100; i++) {
		num = (int)(Math.random() * 10) + 1;
   		// 0.0 ~ 0.9 사이의 실수를 발생시킨다 따라서 1~10까지의 수로 바꿔준다.
   		count[num-1]++; // 배열의 첫번째 방의 주소는 0부터 시작임.
    
    	System.out.printf("%3d", num);
    	if(i%10 == 0) { //한줄에 10개씩 출력
    		System.out.println();
        }
	}
System.out.println("\n숫자별 발생횟수 : ");
for(int i=0; i<count.length; i++) {
	System.out.println((i+1)+ "의 발생횟수 :  " + count[i]);
    }

int []a = new int[] {2,4,6,8,10};

선언과 동시에 초기화하는 경우 크기를 명시하지 않는다.

int []b = {1,3,5,7,9};

배열선언과 초기화를 동시에 하는 경우 new int[]를 생략할 수 있다.

 

배열은 한번 크기를 지정하면 크기를 변경할 수 없고

이미 선언된 배열은 가비지컬렉터 garbage collector의 회수 대상이 된다. (할당된 메모리를 회수한다.)

따라서 기존 내용은 사라지고 

메모리 할당은 다시 하게 되면 그 배열안에 값은 0으로 초기화 된다.

편차 ? (점수-평균)

Scanner sc = new Scanner(System.in);

String[] name = new String[5];  

int[] score = new int[5];

int tot;

double ave, s;  //평균 소수가 나올 수 있으므로 편차(점수-평균)와 함께 실수형으로 잡아준다.

 

tot = 0;

for(int i=0; i<name.length; i++) {

System.out.print((i+1)+"번째 이름 ? ");

name[i] = sc.next();

System.out.print("     점수 ? ");

score[i] = sc.nextInt();

 

tot +=score[i];

}

 

=========5명의 이름과 점수를 입력 받고 총점을 계산한다.

ave = (double)tot/score.length;

총점을 데이터 입력 갯수(5개)로 나누어 평균을 구한다.

 

System.out.println("\n이름\t점수\t편차");

System.out.println("------------------------");

for(int i=0; i<score.length; i++){

s= score[i] - ave;

// 편차는 점수 - 평균

System.out.println(name[i]+"\t"+score[i]+"\t"+s);

// 이름과 점수 1~5까지 들어있는 값을 출력하다.

System.out.println("------------------------");

System.out.println("총합 : " + tot);

System.out.println("------------------------");

System.out.println("평균 : " + ave);

+ Recent posts