자동 로또번호 생성기

메인,메소드로 기능별,객체

토요일 오후 8:30 추첨

숫자적힌 공 1~45까지 

랜덤 수 5개  ex)31,22,41,8,10

"제 xx회 로또당첨번호는 8,10,22,31,41 입니다 축하드립니다."

1. 숫자 중복 불가

2. 랜덤

3. sort정렬(오름차순)

+ 보너스 번호

++ 1000원 5000원 내면 



소스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.Random;
import java.util.Scanner;
 
public class Lotto {
    static int a=326;    //회차 
    static Random r = new Random();        //random 함수 사용하는 두번째 방법
    
    public static void main(String[] args) {    
        System.out.print("로또를 구매하시겠습니까(y/n)? ");
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();    // y/n 입력
        
        if(s.equals("y")){                //구매 yes 인 경우
            System.out.print("몇 줄 구매(1-5) : ");
            int line = sc.nextInt();    //입력
            System.out.println((line*1000)+"원 입니다.");    //계산할 가격 출력
        
            System.out.println();
            prn();        //로또 페이지 출력 함수 호출
            for(int i=0;i<line;i++){    //구매한 줄 수 만큼 buy()메소드 호출
                buy(i);    
            }
            
            System.out.println("-------------------------------------");
            event();    //당첨번호 출력 메소드 event() 호출
            
        }else if(s.equals("n")){        //구매 no 인 경우
            event();    //당첨번호 출력 메소드 event() 호출
            
        }else{
            System.out.println("잘못입력하셨습니다.");
        }
    }//main end
    
    public static void prn(){    //로또 구매시 print
        SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat ( "yyyy.MM.dd HH:mm:ss", Locale.KOREA );
        Date currentTime = new Date();
        String mTime = mSimpleDateFormat.format ( currentTime );
        
        System.out.println("--------------나눔 로또--------------");
        System.out.println("               제 "+a+"회 ");    //회차는 멤버필드에 선언
        System.out.println();
        System.out.println("발행일 : "+ mTime);        //현재 시간
        System.out.println("추첨일 : "+ mTime);
        System.out.println("-------------------------------------");
    }//prn end
    public static void buy(int a){    //로또 구매 시 랜덤 번호 출력
        int[] ran = new int[5];
    
        for(int i=0;i<ran.length;i++){
            ran[i]=r.nextInt(45)+1;    //1-45까지 랜덤수를 배열에 입력
            
            for(int j=0;j<i;j++){    //중복수 있는지 확인하기 위해
                if(ran[i]==ran[j]){    //중복된 수 생성됐다면
                    i--;    //i-1을 해서 다시 랜덤수 입력할수있도록
                    break;
                }
            }
        }
        System.out.print((char)(65+a)+" 자동\t");    //"A,B,,,자동" 출력
        for(int i=0;i<ran.length;i++){
            System.out.print(ran[i]+"  ");    //수 출력
        }
        System.out.println();
    }//buy end
    public static void event(){    //당첨 확인
        int[] ran = new int[6];
        System.out.println("******************************************************************");
        System.out.print("제 "+a+"회 로또당첨번호는 ");        //회차는 멤버필드에 선언
        
        for(int i=0;i<ran.length;i++){
            ran[i]=r.nextInt(45)+1;    //1-45까지 랜덤수를 배열에 입력
            
            for(int j=0;j<i;j++){    //중복수 있는지 확인하기 위해
                if(ran[i]==ran[j]){    //중복된 수 생성됐다면
                    i--;            //i-1을 해서 다시 랜덤수 입력할수있도록
                    break;            //중간 for문 나가기
                }
            }
        }
        int temp=0;
        for(int i=0;i<ran.length-1;i++){    //오름차순으로 정렬(보너스번호를 뺀 5개만)
            for(int j=i+1;j<ran.length-1;j++){    
                if(ran[i] > ran[j]){
                    temp=ran[i];
                    ran[i]=ran[j];
                    ran[j]=temp;
                }
            }
            System.out.print(ran[i]+"  ");    //오름차순으로 출력
        }
        System.out.println("입니다. 축하드립니다.");
        System.out.println("보너스 번호는 "+ran[ran.length-1]+" 입니다.");    //마지막 보너스 랜덤수 출력
    }//event end
}//class end
 
 
 
cs

결과


'* Programming > JAVA' 카테고리의 다른 글

DAY13 String 1  (0) 2016.07.21
DAY13 학생 성적관리 프로그램  (0) 2016.07.21
JAR로 export 하기  (0) 2016.07.19
DAY12 배열 문제  (0) 2016.07.19
DAY12 배열  (0) 2016.07.19

Export 하기

Java에서 Runnable JAR file 을 선택 후 Next 클릭

실행하려는 class를 Launch configuration에서 선택 후

저장할 위치를 이름을 지정해 선택

Finish

.jar 파일이 생성된 것을 확인

cmd 창을 켜서 

해당위치로 이동 후

java -jar day12(lotto).jar(.jar이름)  입력 

실행되는 것을 확인 할 수 있다






'* Programming > JAVA' 카테고리의 다른 글

DAY13 학생 성적관리 프로그램  (0) 2016.07.21
DAY12 Lotto구매하기 결과발표(static메소드)  (0) 2016.07.21
DAY12 배열 문제  (0) 2016.07.19
DAY12 배열  (0) 2016.07.19
DAY11 class 정리/상수화  (0) 2016.07.18

Q1. 

1

22

333

4444

55555

int[] arr = {1,2,3,4,5};

for(int i=0;i<5;i++){

for(int j=0;j<i+1;j++){

System.out.print(arr[i]);

}

System.out.println();

}

다른방법

int limit = 6;

String[] arr2 = new String[limit];

for(int i=0;i<limit;i++){

arr2[i]="";

for(int j=0;j<=i;j++){

arr2[i]+=i+1+"";

}

}

for(int i=0;i<limit;i++){

System.out.println(arr2[i]);

}

Q2. 

* * *

 * *

* * *

 * *

* * *

char[] arr = new char[25];

for(int i=0;i<25;i++){

if(i%2==0){

arr[i]='*';

}else{

arr[i]=' ';

}

if(i%5==0){

System.out.println();

}

System.out.print(arr[i]);

}

Q3. 

*

   *

       *

           *

                *

char[] st = new char[10];

for(int i=0;i<5;i++){

for(int j=0;j<i+1;j++){

if(j==i){

st[i]='*';

System.out.print(st[i]);

}else{

st[i]=' ';

System.out.print(st[i]);

}

}

System.out.println();

}

Q4. 

arr={24,33,17,44,2};

로또 번호는 2,17,24,33,44 입니다.

int[] arr = {24,33,17,44,2};

int tmp;


for(int i=0;i<arr.length-1;i++){ //오름차순

for(int j=i+1;j<arr.length;j++){

if(arr[i]>arr[j]){

tmp=arr[i];

arr[i]=arr[j];

arr[j]=tmp;

}

}

}

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

if (i==arr.length-1) {

System.out.print(arr[i] + "입니다");

} else if (i == 0) {

System.out.print("로또 번호는 " + arr[i] + ",");

} else {

System.out.print(arr[i] + ",");

}

}


'* Programming > JAVA' 카테고리의 다른 글

DAY12 Lotto구매하기 결과발표(static메소드)  (0) 2016.07.21
JAR로 export 하기  (0) 2016.07.19
DAY12 배열  (0) 2016.07.19
DAY11 class 정리/상수화  (0) 2016.07.18
DAY10 업다운 게임  (0) 2016.07.18

12일차 강의 정리


1. 단일 배열

배열(객체)

변수가 많이 필요한 경우에 사용

선언 형태 : 자료형[] 변수명(배열명) = new 자료형[갯수];

     ( 자료형 변수명[] = new 자료형[갯수]; )

( 자료형[] 변수명 = {값,값,...}; )

변수명[인덱스]=초기값;

인덱스는 0으로 시작, +1씩 증가, 총 갯수에서 -1 까지

소스

public class Ex01 {

public static void main(String[] args) {

int[] arr = new int[100]; //배열 선언 방법1

for(int i=0;i<10;i++){ //배열의 초기화

arr[i]=i;

System.out.println("arr["+i+"]="+arr[i]);

}

System.out.println(arr[0]+arr[1]+arr[2]+arr[3]+arr[4]);

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

char[] ch = new char[26]; //char배열 선언

for(int i=0;i<26;i++){

ch[i]=(char)(65+i);

System.out.print(ch[i]+" ");

}

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


int[] arr2 = new int[]{0,1,2,3,4}; //배열 선언 방법2

for(int i=0;i<5;i++){ //배열의 초기화

System.out.print(arr2[i]+" ");

}

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

int[] arr3 = {0,1,2,3,4}; //배열 선언 방법3

for(int i=0;i<5;i++){ //배열의 초기화

System.out.print(arr3[i]+" ");

}

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

//배열사용 ->홀수들의 합(1~100)까지

int[] array = new int[101]; //배열 선언

int sum=0;

for(int i=0;i<101;i++){ //배열의 초기화

array[i]=i;

if(i%2!=0){

sum +=array[i];

}

}

System.out.println("값=>"+sum);

}//main end

}//class end

결과

소스2

public class Ex02 {

public static void main(String[] args) {

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

String input1 = args[0];

String input2 = args[1];

String input3 = args[2];

System.out.println("input count:"+args.length+"("+input1+", "+input2+", "+input3+")"); //입력준 값의 갯수와 1,2,3출력

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

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

System.out.println(args[i]); //args입력 준 값 출력

}

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

int[] arr = null; //배열의 선언

arr = new int[3]; //배열의 선언

for(int i=0;i<arr.length;i++){ //배열의 초기화

arr[i]=0;

}

arr[0]=1;

arr[1]=2;

arr[2]=3;

//새로 다시 선언함으로 위의 객체는 가비지 컬렉션(자원관리에 효율적)에 의해 삭제(더이상 가르킬방법이 없어서)

arr = new int[5];

arr=new int[]{1,2,3,4,5};

int[] arr2 = {1,2,3};         //new int[]생략 가능한 경우는 선언시 최초

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

System.out.print(arr[i]+"\t");

}

}//main end

}//class end

결과2

소스3

public class Ex03 {

public static void main(String[] args) {

String[] arr = new String[]{"java", "web", "spring"};

System.out.println("1번째 결과:");

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

System.out.println(arr[i]);

}

func1(arr); //메소드 호출(문자열 인자로)


System.out.println("\n3번째 결과:");

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

System.out.println(arr[i]);         //배열은 참조변수,,주소값을 복사했기 때문에 변형된 것이 그대로 출력

}

}//main end


public static void func1(String[] st){ //배열 {"java", "web", "spring"}을 인자로 받아

st[1]="html"; //arr[1]를 변경

System.out.println("\n2번째 결과 출력");

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

System.out.println(st[i]);

}

}//func1 end

}//class end

결과3

소스4 (입력받은 배열을 역순하라)

메인{

int[] arr = new int[]{1,2,3,4,5};

int[] arr2 = new int[arr.length];

//방법1

// int j=arr.length-1;

//

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

// arr2[i]=arr[j];

// j--;

// }

//2방법

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

arr2[i]=arr[i];

}

int temp=0;

for(int i=0;i<arr2.length-1;i++){

for(int j=i+1;j<arr2.length;j++){

if(arr2[i] < arr2[j]){

temp=arr2[i];

arr2[i]=arr2[j];

arr2[j]=temp;

}

}

}

System.out.print("arr1: ");

for(int i=0;i<arr.length;i++){ //arr출력

System.out.print(arr[i]+" ");

}

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

System.out.print("arr2: ");

for(int i=0;i<arr.length;i++){ //arr2출력

System.out.print(arr2[i]+" ");

}

}

결과

2. 다중 배열

선언 형태 : 자료형[][] 변수명(배열명) = new 자료형[갯수][갯수];

다른 방법은 소스로 설명

소스

public static void main(String[] args) {

//다중배열

int[][] arr = new int[3][4]; //[행][열] 순으로 3행 4열의 다중배열

System.out.println("행의 갯수:"+arr.length); //행의 갯수

System.out.println("열의 갯수:"+arr[0].length); //열의 갯수

System.out.println("열의 갯수:"+arr[2].length); //열의 갯수는 행의 번호와 관계X

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

for(int j=0;j<4;j++){

arr[i][j]=j;

System.out.print(arr[i][j]);

}

System.out.println();

}

}//main end

결과

초기화 하는 방법

//학생1 - 국어:70 영어:75 수학70

//학생2 - 국어:80 영어:85 수학84

//학생3 - 국어:90 영어:55 수학60

int[][] sungjuck = new int[3][3];    //선언


//방법1

sungjuck[0][0]=70; //학생1

sungjuck[0][1]=75; //학생1

sungjuck[0][2]=70; //학생1



//방법2

int[] stu2 = sungjuck[1]; //학생2

stu2[0] = 80; //학생2

stu2[1] = 85; //학생2

stu2[2] = 84; //학생2



//방법3

int[] stu3 ={90,55,60}; //학생3

sungjuck[2] = stu3; //학생3

stu3[1]=65; //학생3 영어점수 수정(학생1-X,학생2-O)



//방법4

sungjuck[2] = new int[]{90,55,60}; //학생3

소스(방법5)

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

System.out.println("학생성적관리(v1.2.0)");

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

//방법5

int[][] sungjuck = {{70,75,70},

{80,85,84},

{90,55,60} };     //학생1,2,3 [3][3]

System.out.println("국어\t영어\t수학\t총점\t평균\t학점");

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

int[] stu = sungjuck[i]; //한명의 학생 성적

int sum=0; //총점

double avg; //평균

char c; //학점

for(int j=0;j<stu.length;j++){

sum+=stu[j];

System.out.print(stu[j]+"\t");

}

avg=100*sum/stu.length/100.0; //평균 계산

if(avg>=90){

c='A';

}else if(avg>=80){

c='B';

}else if(avg>=70){

c='C';

}else if(avg>60){

c='D';

}else{

c='F';

}

System.out.println(sum+"\t"+avg+"\t"+c);

}

결과



'* Programming > JAVA' 카테고리의 다른 글

JAR로 export 하기  (0) 2016.07.19
DAY12 배열 문제  (0) 2016.07.19
DAY11 class 정리/상수화  (0) 2016.07.18
DAY10 업다운 게임  (0) 2016.07.18
DAY10 Class/생성자  (0) 2016.07.18

11일차 강의 정리


DAY8, DAY9, DAY10 의 총 정리


객체지향 언어

기능 -> 메소드-동사

속성 -> 필드-명사


메소드

형태 : [static] 자료형 메소드명 (인자){ 

...

return 자료형에 해당하는 값;

   }


1. static 메소드(클래스메소드)

(main에서 사용 형태) [패키지경로].[class명.]메소드명();  *나자신이갖는 메소드의 경우 class명 생략

객체의 생성없이 바로 사용가능

프로그램 시작과 동시에 메모리 static영역에 로딩되어 실행

가비지 컬렉션의  메모리 관리대상이 아님

라이프 사이클은 프로그램 시작 ~ 종료시 까지 항시 유지

절차지향 프로그래밍 - 함수 ...와 동일하다고 생각하면 됨


2. non-static 메소드(인스턴스 메소드)

(main에서 사용 형태)

[패키지경로].Ex01(클래스명) me = new [패키지경로].Ex01()(생성자호출); //참조변수

참조변수(객체 메모리주소값).메소드명();

this = 참조변수 역할

객체 생성이 우선 - 생성된 객체의 주소값을 기억하기 위한 참조변수(클래스타입)


생성자

형태 : [접근제한자] 클래스명(){

...

}

객체 생성에 관여 - 객체 생성시 추가적인 작업

객체 생성 시에 단 한번 수행 - 재호출 불가

일반적으로 필드 값의 초기화


변수

멤버필드(전역변수)

형태 : [static] 자료형 변수명 = 초기화;

호출시 지역변수와 멤버필드 그명칭이 동일할 시, 우선순위는 지역변수>멤버필드


클래스변수(static) - 메모리 static 영역에 프로그램 시작과 동시에~~프로그램end

클래스명.변수명


인스턴스변수(non-static)

참조변수명.변수명


예제소스 & 변수의 상수화

소스

public class Ex01 {

int a;

static final double PI=3.14; //변수의 상수화(변경x)


public Ex01(){        //생성자

a=9;

}

public Ex01(int a){

this.a=a; //멤버필드

}

public static void main(String[] args) {

int a = func1();

func1();

Ex01 me = new Ex01(); //객체 생성

me.func2(); //참조변수를 반복해서 사용

me.func2();

me.func2();

new Ex01().func2(); //한번호출

  //PI=4.12; //에러

System.out.println("PI는 "+PI);

}//main end

static int func1(){

System.out.println("static 메소드");

return 0;

}

void func2(){

System.out.println(++a+"  non-static 메소드");

}

}//class end

결과





'* Programming > JAVA' 카테고리의 다른 글

DAY12 배열 문제  (0) 2016.07.19
DAY12 배열  (0) 2016.07.19
DAY10 업다운 게임  (0) 2016.07.18
DAY10 Class/생성자  (0) 2016.07.18
DAY9 멤버필드  (0) 2016.07.15

+ Recent posts