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

14일차 강의 정리


StringBuffer 클래스 (StringBuilder도 동일)

*StringBuffer 와 StringBuilder의 차이점 : StringBuffer 는멀티 쓰레드 상태에서 동기화를 지원

1. 소스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Ex01 {
    public static void main(String[] args) {
        //String Buffer 클래스
        StringBuffer sb =new StringBuffer("java");
        StringBuffer sb2 = sb.append("World");        //sb에 붙여서 sb2 새로선언
        sb.append("자바");                            //sb에 추가
        
        System.out.println(sb2);
        System.out.println("--------------------");
 
        //StrtingBuffer 와 비교
        String st = new String("java");
        String st2 = st.concat("World");              //st에 붙여서 st2 새로선언
        st.concat("자바");                            //st에 추가
 
        System.out.println(st2);
        System.out.println("--------------------");
    }//main end
}//class end
cs

결과

2. append()

1
2
sb.append(new char[]{'a','b','a'});
sb.append(123456);
cs

결과

3.  insert()

1
sb.insert(4"월드");        //4번째 글자뒤에 추가
cs

결과

4. replace() - 변경

1
sb.replace(46" world ");    //4번째에서 6번째 까지의 글자를 "__"로 변경
cs

결과

5. reverse() 

1
sb.reverse();                //거꾸로 출력
cs

결과

6. replace() - 삭제

1
sb.replace(911"");        //"바자" 를 지워
cs

결과

7. delete() - 6.과 동일

1
sb.delete(911);
cs



초기 버퍼 할당량 = 16

1
2
StringBuffer sb2 = new StringBuffer();
System.out.println("sb2 size: "+sb2.capacity());    //할당된 버퍼 사이즈 (기본:16)
cs

결과

소스

1
2
3
4
5
6
7
sb2.append("abc12");        //추가해줘도 16까지는 버퍼 사이즈는 변경되지않는다
sb2.append("abc12");
sb2.append("abc12");
sb2.append("a");        //17자가되면 버퍼 사이즈는 34(17*2)가 된다
    
System.out.println("------------------------");
System.out.println("sb2 size: " + sb2.capacity());    //할당된 버퍼 사이즈 (기본:16)
cs

결과

소스

1
2
3
4
5
6
7
sb2.append("abc12");        //추가해줘도 16까지는 버퍼 사이즈는 변경되지않는다
sb2.append("abc12");
sb2.append("abc12");
sb2.append("ab");        //17자가되면 버퍼 사이즈는 34(17*2)가 된다
    
System.out.println("------------------------");
System.out.println("sb2 size: " + sb2.capacity());    //할당된 버퍼 사이즈 (기본:16)
cs

결과

소스(16+초기값 버퍼 길이)

1
2
StringBuffer sb3 = new StringBuffer("abc");        //초기값 버퍼 길이 19(16+3)
System.out.println("sb3 size: "+sb3.capacity());
cs

결과

소스(앞뒤 공간 제거)

1
sb3.trimToSize();    //앞뒤공간 제거해서 버퍼 사이즈는 3으로 변경
cs

결과

소스(메모리 할당)

1
2
3
4
System.out.println("------------------------");
StringBuffer sb4 = new StringBuffer();
sb4.ensureCapacity(20);        //내가 원하는 메모리 할당량(디테일하게는 x)
System.out.println(sb4.capacity());
cs

결과


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

DAY15 String " "기준으로 불러오기  (0) 2016.07.25
DAY14 Lotto(객체지향)  (0) 2016.07.25
DAY13 주민등록번호로 신분확인  (0) 2016.07.21
DAY13 String 2  (0) 2016.07.21
DAY13 String 1  (0) 2016.07.21

주민등록번호 입력 

jumin="901230-1837264" 로 입력받음


Q1. 정확히 입력했는지 확인(자릿수 확인, -입력확인)

Q2. 생년월일 출력

Q3. 성별을 확인하고 출력

Q4. 미성년자 확인

Q5. 나이 출력

Q6. 정확히 입력했는지 확인(공백처리, 정확한 숫자입력확인)


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
import java.util.Scanner;
 
public class Ex02 {
 
    static String myNum;
    public static void main(String[] args) {
        
        Scanner sc = new Scanner(System.in);
        
        for(int i=0;i<5;i++){
            System.out.print("주민등록번호 입력(000000-0000000): ");
            myNum = sc.nextLine().trim();    //앞뒤 공백 제거
            
            String err = "정확하지가 않습니다.다시 입력해주세요";
            if(myNum.indexOf("-")!=6 || myNum.length()!=14){        //6번째 자리에 '-'가 없거나 총길이가 14개가 아니면 오류
                System.out.println(err);
            }else if(Integer.parseInt(myNum.substring(2,4))>12 || Integer.parseInt(myNum.substring(4,6))>31){    //월 12이상,일 31이상 일경우 오류
                System.out.println(err);
            }else if(Integer.parseInt(myNum.substring(7,8))>6){        //성별을 나타내는 숫자가 6이상이면 오류
                System.out.println(err);
            }
            else{
                birth();    //생년월일
                mf();        //성별
                bebe();        //미성년자 & 나이
                break;
            }
            if(i==4){
                System.out.println("종료합니다. 정확히 확인 후 다시 이용해 주십시오.");
            }
        }
    }//main end
    
    public static void birth(){    //생년월일 출력
        int y = 0;
        System.out.print("생년월일: ");
        System.out.println(myNum.substring(0,2)+"년"+myNum.substring(2,4)+"월"+myNum.substring(4,6)+"일");
    }//birth end
    
    public static void mf(){    //성별
        char c = myNum.charAt(7);
        
        System.out.print("성별: ");
        if(c=='1'||c=='3'){
            System.out.println("남자");
        }else if(c=='2'||c=='4'){
            System.out.println("여자");
        }else{
            System.out.println("외국인");
        }
    }//mf end
    
    public static void bebe(){        //미성년자확인 & 나이 출력
        int age = Integer.parseInt(myNum.substring(0,2));
                
        if(age<=16){
            age = Integer.parseInt(20+myNum.substring(0,2));    //년도가 16년보다 작으면 2000년대 출생
        }else{
            age = Integer.parseInt(19+myNum.substring(0,2));    //년도가 16년보다 크면 1900년대 출생
        }
        
        age = 2016-age+1;
        if(age>=19){
            System.out.println("성년 입니다.");
        }else{
            System.out.println("미성년자 입니다.");
        }
        System.out.println("나이: "+age);
    }//bebe end
}//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
import java.util.Scanner;
 
public class Ex02 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String input=null;
        int cnt =0;
        boolean ck = false;
        while(cnt++<5){
            System.out.println("주민번호를 입력해주세요");
            System.out.println("\tex)901230-1837264");
            System.out.print(">>");
            input = sc.nextLine().trim();
            for(int i=0; i<input.length(); i++){
                if(i==6){continue;}
                switch (input.charAt(i)) {
                    case '0'case '1'case '2'case '3'case '4'
                    case '5'case '6'case '7'case '8'case '9':
                        if(i==0){ck=true;}else{ck = ck&&true;} break;
                    default : ck=false;
                } 
            }
            if(ck&&input.length()==14&&input.charAt(6)=='-'){break;}
            System.out.println(cnt+"회 입력이 잘못되셨습니다");
            if(cnt==5){return;}
            System.out.println("확인후 재입력 바랍니다\t");
        }
        System.out.println("당신의 생년월일:");
        String[] st = {"년","월","일"};
        String[] st2 = {"","",""};
        for(int i=0; i<6; i++){
            st2[i/2]+=input.charAt(i);
        }
        for(int i=0; i<st2.length; i++){
            st2[i]+=st[i];
        }
        for(int i=0; i<st2.length; i++){
            System.out.print(st2[i]);
        }
        System.out.println();
        System.out.print("당신의 성별은 ");
        if(input.charAt(7)=='1'){
            System.out.print("남자");
        }else if(input.charAt(7)=='2'){
            System.out.print("여자");
        }else{
            System.out.print("외계인");
        }
        System.out.println("입니다");
        int age=0;
        if(input.charAt(0)=='0'){
            age = 2016-(2000+(input.charAt(1)-'0'))+1;
        }else if(input.charAt(0)==1){
            age = 2016-(2000+10+(input.charAt(1)-'0'))+1;
        }else{
            age = 2016-(1900+(input.charAt(0)-'0')*10+(input.charAt(1)-'0'))+1;
        }
        System.out.println("당신의 나이는 "+age+"세 입니다");
        if(age<19){
            System.out.println("미성년자이시네요 담배,술 금지 입니다");
        }
    }
 
}
cs

결과


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

DAY14 Lotto(객체지향)  (0) 2016.07.25
DAY14 StringBuffer  (0) 2016.07.21
DAY13 String 2  (0) 2016.07.21
DAY13 String 1  (0) 2016.07.21
DAY13 학생 성적관리 프로그램  (0) 2016.07.21

+ Recent posts