16일차 강의 정리


1. 접근제한자

 - 정보의 은닉성


public            - 누구나 접근가능, 동일 프로젝트 내, 라이브러리 포함

protected       - default 동일하나 상속시는 허용

default           - 동일패키지만 접근허용

private           - 동일패키지에서 조차도 허용 하지 않음


** 동일 문서내에 public class는 단하나의 class에만 올수있다.

하나의 클래스 당 하나의 클래스파일을 생성한다.

동일 패키지 안에서 같은 calss의 이름을 사용하면 오류..되도록 하나의 java파일에 하나의 calss파일을 생성하는 것이 좋다.

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

DAY17 상속2(+캡슐화, 다형성)  (0) 2016.07.26
DAY16 상속1  (0) 2016.07.26
회원가입 프로그램  (0) 2016.07.25
DAY15 Wrapper class  (0) 2016.07.25
DAY15 String " "기준으로 불러오기  (0) 2016.07.25
"회원가입페이지"
사용하실 아이디:(단, 특수문자 사용불가)
패스워드:(8자이상, 첫글자 문자, 대소문자와 숫자 조합)
생년월일:991231
회원가입되셨습니다. or 실패하셨습니다 다시 입력하십시오
(패스워드 입력중 대문자만 8자이상인 경우 오류)

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
public class Ex06 {
    public static void main(String[] args) {        
        Scanner sc = new Scanner(System.in);
        String id, pass, birth;
 
        System.out.println("**********회원가입**********");
 
        int count = 0;
        for (int i = 0; i < 5; i++) {
            System.out.print("사용하실 아이디(단, 특수문자 사용불가): ");
 
            id = sc.nextLine().trim(); // 앞뒤공간제거후 입력받는다
            char[] ch = new char[id.length()];
 
            for (int j = 0; j < id.length(); j++) {
                ch[j] = id.charAt(j);
                if (!(Character.isDigit(ch[j])) && !(Character.isLetter(ch[j])) && Character.isDefined(ch[j])) { 
                    // 숫자가 아니고, 문자가아니고, 유니코드인 경우(특수문자)
                    count++;
                }
            }
        
            if (count > 0) {
                System.out.println("실패하셨습니다. 다시 입력하십시요.");
                count=0;
            } else {
                System.out.println("아이디 " + id + " 사용하셔도 좋습니다.");
                break;
            }
            if(i==4){
                System.out.println("다시 처음부터 시작하십시오");
                return;
            }
 
        }// for end
 
        for (int i = 0; i < 5; i++) {
            System.out.print("패스워드: ");
            pass = sc.nextLine().trim(); // 패스워드 입력
            int m = password(pass);
            if (m == 0) {
                break;
            } // 리턴이 0이면 반복문종료
            
            if(i==4){
                System.out.println("다시 처음부터 시작하십시오");
                return;
            }
 
        }// for end
 
        System.out.print("생년월일(ex.901231): ");
        birth = sc.nextLine().trim();
        Birth(birth);
 
 
    }//main end
 
    public static int password(String pass){
        char[] ch = new char[pass.length()];
        int count=0;
        for(int i=0;i<pass.length();i++){
            count=0;
            ch[i] = pass.charAt(i);
            if(!(Character.isUpperCase(ch[i]))){
                count++;
            }else if(Character.isLowerCase(ch[i])){
                count++;
            }else if(Character.isDigit(ch[i])){
                count++;
            }else{
                break;
            }
        }
        if(count>0){
            System.out.println("대문자 소문자 숫자로 조합을 하셔야 합니다.");
            return 1;
        }
        
        if(Character.isDigit(ch[0])){
            System.out.println("첫글자는 문자이여야 합니다.");
            return 1;
        }
        if(pass.length()<8){
            System.out.println("8자 이상이여야 합니다.");
            return 1;
        }
        return 0;
    }//password end
    
    public static void Birth(String birth){
        if(Character.isDigit(Integer.parseInt(birth)) || (birth.length()!=6)){
            System.out.println("잘못입력하셨습니다.");
        }else{
            System.out.println("회원가입되셨습니다.");
            
        }
    }
}//class end
cs

결과


다른소스(아이디 입력중 가운데 특수문자가 들어갈 경우 오류)

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
import java.util.Scanner;
 
public class Ex03 {
    static final String bar="----------------------------------------------";
    static String[] prn={"사용하실 아이디:","패스워드:","생년월일:"};
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        boolean[] result =null;
        String[] input = new String[3];
        System.out.println(bar);
        System.out.println("회원가입페이지");
        System.out.println(bar);
        while(true){
            result =new boolean[]{falsefalsefalse};
            System.out.print(prn[0]);
            input[0]=sc.nextLine();
            char[] ch1 = input[0].toCharArray();
            for(int i=0; i<ch1.length; i++){
                char temp = ch1[i];
                if(Character.isDigit(temp)
                        ||Character.isUpperCase(temp)
                        ||Character.isLowerCase(temp)){
                }else{
                    break;
                }
                result[0]=true;
            }
            System.out.print(prn[1]);        //패스워드
            input[1]=sc.nextLine();
            if(input[1].length()>7&&Character.isLetter(input[1].charAt(0))){
                boolean[] two ={falsefalsefalse};
                for(int i=0; i<input[1].length(); i++){
                    if(Character.isDigit(input[1].charAt(i))){
                        two[2]=true;//숫자검사
                    }
                    if(Character.isUpperCase(input[1].charAt(i))){
                        two[0]=true;// 대문자검사
                    }
                    if(Character.isLowerCase(input[1].charAt(i))){
                        two[1]=true;// 소문자 검사
                    }
//                    System.out.println(two[0]+":"+two[1]+":"+two[2]);
                }
                if(two[0]&&two[1]&&two[2]){
                    result[1]=true;
                }
            }
            System.out.print(prn[2]);
            input[2]=sc.nextLine();
            ch1 = input[2].toCharArray();
            if(ch1.length==6){
                result[2]=true;
            }
            for(int i=0; i<ch1.length; i++){
                if(!(Character.isDigit(ch1[i]))){
                    result[2]=false;
                    break;
                }
            }
            if(result[0]&&result[1]&&result[2]){break;}
            if(!result[0]){
                System.out.println("아이디 입력을 확인하세요");
            }
            if(!result[1]){
                System.out.println("패스워드 입력을 확인하세요");
            }
            if(!result[2]){
                System.out.println("생년월일 입력을 확인하세요");
            }
        }
            System.out.println("회원가입되셨습니다");
    }
 
}
cs

결과


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

DAY16 상속1  (0) 2016.07.26
DAY16 접근제한자  (0) 2016.07.26
DAY15 Wrapper class  (0) 2016.07.25
DAY15 String " "기준으로 불러오기  (0) 2016.07.25
DAY14 Lotto(객체지향)  (0) 2016.07.25

15일차 강의 정리


래퍼클래스

1. Integer

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
public class Ex01 {
    public static void main(String[] args) {
        //Wrapper class
        //integer
        Integer i = 123;    //오토박싱(자동으로 객체를 씌우는것)<->언박싱
        
        int a=(int)2147483647;    //원시자료형
        Integer one = new Integer(3);
        Integer one2 = new Integer(a);    //정수실수형 문자열
        Integer one3 = new Integer("3");
        Integer one4 = one2+one3;
        int one5= one2.intValue()+one3.intValue();
        one4 = new Integer(one5);
        int one6 = Integer.valueOf("234");    //return 타입이 int
        
        System.out.println(one4.doubleValue());        //.intValue() 이것은 자동으로 
        System.out.println(Integer.MAX_VALUE);
        System.out.println(Integer.MIN_VALUE);
        System.out.println(Integer.SIZE);
        System.out.println(one.intValue()==one3.intValue());
 
        System.out.println("------------------------");
        System.out.println(one6);
        System.out.println(one3.compareTo(one));    //같으면 0 ,3가 크면 1,작으면 -1
        System.out.println(Integer.reverse(9));    //?
        System.out.println(Integer.toBinaryString(4));    //2진수로 반환(문자열로 반환된다)
        System.out.println(Integer.toOctalString(8));    //8진수로 반환
        System.out.println(Integer.toHexString(19));    //16진수
    }
}
 
class Integ{
    int a;
    public Integ(int a){
        this.a=a;
    }
    public Integ(String st){
        this.a=Integer.parseInt(st);
    }
}
cs

2. char

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
public class Ex02 {
    public static void main(String[] args) {
        //char
//        Character ch = new Character('a');
        
//        System.out.println(Character.isDigit('+'));        //숫자 인지 확인
//        System.out.println(Character.isLetter('a'));    //문자 인지 확인
//        System.out.println(Character.isUpperCase('A'));    //문자이면서 대문자인지
//        System.out.println(Character.isLowerCase('a'));    //소문자인지
//        System.out.println(Character.isSpace('a'));        //공백인지
//        System.out.println(Character.isDefined(' '));    //유니코드인지
        
        char[] ch = {'함','a','A','!',' ','5'};
        for(int i=0;i<ch.length;i++){
            
            System.out.print(ch[i]+"는 ");
            if(Character.isDefined(ch[i])){
                System.out.println("유니코드인  ");
            }
            if(Character.isUpperCase(ch[i])){
                System.out.print("대");
            }
            if(Character.isLowerCase(ch[i])){
                System.out.print("소");
            }
            if(Character.isLetter(ch[i])){
                System.out.println("문자입니다");
            }
            if(Character.isDigit(ch[i])){
                System.out.println("숫자입니다.");
            }
            if(Character.isWhitespace(ch[i])){
                System.out.println("공백문자입니다.");
            }
        }
    }
}
cs

3. boolean

1
2
3
4
5
6
7
8
9
10
11
12
13
public class Ex03 {
    public static void main(String[] args) {
        // boolean
        Boolean boo = new Boolean(Boolean.TRUE);
        Boolean boo2 = new Boolean("false");
 
        if(boo2.booleanValue()){
            System.out.println("참입니다");
        }else{
            System.out.println("거짓입니다.");
        }
    }
}
cs

4. byte

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
public class Ex04 {
    public static void main(String[] args) {
        //byte
        Byte by1 = new Byte("1");
        Byte by2 = new Byte("2");
        byte a = (byte)1;
        byte b = (byte)2;
        byte c = (byte)((int)a+(int)b);
        
//        Byte by3 =(Byte)((byte)(by1.byteValue()+by2.byteValue()));
//        System.out.println(by3+3);
        Byte by3 =new Byte((byte)(by1.byteValue()+by2.byteValue()));
        System.out.println(by3+3);
 
        System.out.println((byte)(Byte.MAX_VALUE+1));
        
        Short sh1 = Short.MAX_VALUE;
        Short sh2 = Short.MIN_VALUE;
        System.out.println(sh1);
        System.out.println(sh2);
        
        Long lo1 = new Long(9223372036854775806l);
        System.out.println(lo1);
        System.out.println(lo1.intValue());
        System.out.println(Long.toBinaryString(lo1));
        System.out.println(Long.toOctalString(lo1));
        System.out.println(Long.toHexString(lo1));
        Long lo2 = Long.MAX_VALUE;
        Long lo3 = Long.MIN_VALUE;
        System.out.println(lo2);
        System.out.println(lo3);
    }
}
cs

5. float

1
2
3
4
5
6
7
8
9
10
11
12
13
public class Ex05 {
    public static void main(String[] args) {
        //Float
        Float f1 = new Float(10.0/3);
        
        System.out.println(f1);
        System.out.println(f1.byteValue());
        System.out.println(f1.intValue());
        System.out.println(f1.floatValue());
        System.out.println(f1.doubleValue());
        System.out.println(f1.isInfinite());
    }
}
cs


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

DAY16 접근제한자  (0) 2016.07.26
회원가입 프로그램  (0) 2016.07.25
DAY15 String " "기준으로 불러오기  (0) 2016.07.25
DAY14 Lotto(객체지향)  (0) 2016.07.25
DAY14 StringBuffer  (0) 2016.07.21

15일차 강의 정리


1
String names = "원윤희 이우엽 이필재 김영우 범근 주왕";
cs


방법1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
char[] ch1 = new char[3];
char[] ch2 = new char[3];
char[] ch3 = new char[3];
char[] ch4 = new char[3];
names.getChars(03, ch1, 0);
names.getChars(47, ch2, 0);
names.getChars(811, ch3, 0);
names.getChars(1215, ch4, 0);
for(int i=0;i<ch1.length;i++){
    System.out.println(ch1[i]);
}
System.out.println(String.valueOf(ch1));    //원윤희
System.out.println(String.valueOf(ch2));    //이우엽
System.out.println(String.valueOf(ch3));    //이필재
System.out.println(String.valueOf(ch4));    //김영우
cs

방법2

1
2
3
4
5
6
7
8
9
10
11
12
char[][] ch= new char[4][3];        //다중배열
String[] name = new String[ch.length];
 
for(int i=0;i<ch.length;i++){
    ch[i]=new char[3];
    names.getChars(i*4, i*4+3, ch[i], 0);
}
 
for(int i=0;i<name.length;i++){
    name[i]=String.valueOf(ch[i]);
    System.out.println(name[i]);
}
cs

방법3 과 방법 4는 띄어쓰기 기준으로 분류하는 방법

1
String names = "원윤희   이우엽 이필재 김영우   범근 주왕";
cs


방법3 (split)

1
2
3
4
5
String[] name = names.split(" ");    //" "띄어쓰기를 기준으로 잘라서 name에 저장
for(int i=0;i<name.length;i++){
    System.out.println(name[i]);
}
System.out.println(name.length);    //띄어쓰기 하나하나 가 기준이고 다음의 방법은 다르다
cs

split(String)의 괄호 안에 구분자를 넣어주면되는데,

.(마침표)는 "불특정 문자1개"라는 의미라 "\\."로 표현 해줘야 한다


방법4

1
2
3
4
5
6
7
8
9
StringTokenizer token = new StringTokenizer(names);
 
int cnt = token.countTokens();        //띄어쓰기를 기준으로 count
String[] name = new String[cnt];
for(int i=0;i<cnt;i++){
    name[i]=token.nextToken();            //배열에 하나씩 다음 이름 저장
    System.out.println(i+":"+name[i]);    //출력
}
System.out.println(">>"+cnt+"명");        //값이 없는것은 count로 세어주지 않는다.(0부터 count)
cs


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

회원가입 프로그램  (0) 2016.07.25
DAY15 Wrapper class  (0) 2016.07.25
DAY14 Lotto(객체지향)  (0) 2016.07.25
DAY14 StringBuffer  (0) 2016.07.21
DAY13 주민등록번호로 신분확인  (0) 2016.07.21

Lotto를 객체지향적으로 작성하기


Lotto 소스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class Lotto {
    //객체 지향적 소스
    public static void main(String[] args) {
 
        Ball[] box = new Ball[45];
        String[] colorName={"검정","파랑","노랑","빨강","초록"};
        
        for(int i=0;i<45;i++){    // 공 객체 만들어 박스에 담기
            box[i]= new Ball(i+1,colorName[i/10]);    //Ball 생성자
        }
 
        int cnt=0;
        while(cnt<5){
            int idx = (int)(Math.random()*45);    //0~44
            if(box[idx].mark){        //중복을 피하기위한 조건문
                box[idx].show();    //출력
                box[idx].setMark();    //한번출력됬으니 체크
                cnt++;
            }
        }//while end 
    }//main end
}//class end
cs

Ball 소스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class Ball {
    public int num;            //숫자
    public String color;    //공의 색
    public boolean mark;    //중복여부 확인
    
    public Ball(int num,String color){        //생성자
        this.num=num;
        this.color=color;
        mark = true;
        System.out.println("공하나를 번호("+num+")를 부여하고");
        System.out.println(color+"색 을 칠하여 박스에 넣는다");
    }
    
    public void show(){        //출력
        System.out.println(num+" : "+color);
    }
    public void setMark(){    //중복되지않도록 체크
        mark= !(mark);
    }
}//class end
cs


결과

......생략


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

DAY15 Wrapper class  (0) 2016.07.25
DAY15 String " "기준으로 불러오기  (0) 2016.07.25
DAY14 StringBuffer  (0) 2016.07.21
DAY13 주민등록번호로 신분확인  (0) 2016.07.21
DAY13 String 2  (0) 2016.07.21

+ Recent posts