Java

[Java] System.in.read() / Scanner / if ~ else if / 이중 for문 / printf / println

소댓 2023. 3. 6. 22:25

* 사용자로부터 입력 받는 방법 > System.in.read()

- system.in.read();는 직접 자판의 keycode 값을 처리해야 함

package day03;
import java.io.IOException;
public class StatementTest13 {

   public static void main(String[] args) throws IOException {

   System.out.println("입력 : ");
   int value = System.in.read();   > 한 문자의 아스키 코드 값을 돌려줌

따라서,

   value -= 48;  > 필요함   

 

 

* 표준 출력 장치로부터 문자열 입력 받아 출력 > Scanner

- 실제 정수/실수 등의 기본 타입으로도 입력받을 수 있음

- keycode 처리를 깔끔하게 함, 식에 System.in 포함

 

package day03;
import java.util.Scanner;
public class StatementTest16 {

   public static void main(String[] args) {

   Scanner sc = new Scanner(System.in);

   int score = sc.nextInt();

 

 

* 조건 분기문 : 조건에 따라서 서로 다른 코드가 동작하도록

- if ~ else if


if(조건) {
조건 1이 참일 때 실행되는 코드
}else if(조건2)
조건 2가 참일 때 실행되는 코드
}else if(조건3)
조건 3이 참일 때 실행되는 코드
}else {
그 외의 경우라면 실행되는 코드
}

 

 

* print와 println의 차이

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package day03;
 
public class StatementTest18 {
 
    public static void main(String[] args) {
        // print와 println의 차이
        System.out.println("Hello World"); // 엔터기능이 들어있음
        
        System.out.print("123");
        System.out.print("456\n");
        
        for(int i = 1; i<=9; i++) {
            System.out.print(" 2 * " + i + " = " + 2*+ "\t");
        }
    }
 
}
cs

 

 

 

 

 

[ 실습 ]

 

* 사용자로부터 입력 받은 값으로 구구단 출력

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package day03;
import java.io.IOException;
 
public class StatementTest12 {
 
    public static void main(String[] args) throws IOException {
        // 사용자로부터 입력받은 단(구구단)을 출력
        System.out.println("몇단?");
        // 1. 사용자로부터 숫자를 입력받는다.
        // 표준 입력장치로 값을 입력받아 가져오기
        
        int dan = System.in.read(); // 한 문자의 아스키코드 값을 돌려줌
        
        // 0의 ASCII : 48
        dan -= 48// = 1
        System.out.println("입력값 : " + dan);
        for (int i = 1; i<=9; i++) {
        System.out.println(dan + " * " + i + " = " + dan*i);
        }
    }
 
}
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
package day03;
import java.io.IOException;
public class StatementTest13 {
 
    public static void main(String[] args) throws IOException {
        // 사용자가 입력한 숫자가 홀수인지 짝수인지 판별
        // 1. 사용자로부터 1자리 숫자를 입력받는다.
        System.out.println("입력 : ");
        int value = System.in.read();
        
        // 2. 아스키코드값을 숫자로 변환
        value -= 48;
        
        // 3. 출력
        System.out.println(value);
        
        // 조건 분기문 : 조건에 따라서 서로 다른 코드가 동작하도록
        // if(조건) {
            // 조건 1이 참일 때 실행되는 코드
        // }else if(조건2)
            // 조건 2가 참일 때 실행되는 코드
        // }else if(조건3)
            // 조건 3이 참일 때 실행되는 코드
        // }else {
            // 그 외의 경우라면 실행되는 코드
        // }
        if(value%2 == 1) { // value를 2로 나눈 값이 1이면 실행
            System.out.println(value + "는 홀수 입니다");
        }
        else { // value를 2로 나눈 값이 0이면 실행
        System.out.println( value + "는 짝수 입니다");
        }
        }
 
}
cs

 

 

* 사용자로부터 입력 받은 숫자가 3의 배수인지 아닌지 여부 출력

 

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
package day03;
import java.io.IOException;
public class StatementTest14 {
    public static void main(String[] args) throws IOException {
        // 사용자로부터 입력 받은 숫자(1자리)가 3의 배수인지
        // 아닌지 여부를 출력
 
        // ex)
        // 숫자입력: 9
        // 9는 3의 배수
        // 숫자입력: 8
        // 8은 3의 배수가 아닙니다.
        System.out.println("숫자입력: ");
        int v = System.in.read();
        
        v -= 48;
        if (v%3 == 0) {
            System.out.println(v + "는 3의 배수");
        } else {
            System.out.println(v + "는 3의 배수가 아닙니다.");
        }
        
 
    }
}
cs

 

 

* 성적 총점, 평균과 그에 따른 학점 > if ~ else if 문

 

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
package day03;
 
public class StatementTest15 {
 
    public static void main(String[] args) {
        // 국어 영어 수학 점수
        int kor = 55;
        int eng = 90;
        int mat = 70;
        
        // 총점 : tot, 평균 : avg
        int tot = kor + eng + mat;
        float avg = tot/3.0f;
        // 총점 : XXX
        // 평균 : XXX
        System.out.println("총점 : " + tot);
        System.out.println("평균 : " + avg);
        // 평균 점수에 따른 학점 평가
        // 90점 이상이면 A
        // 80점 이상이면 B
        // 70점 이상이면 C
        // 60점 이상이면 D
        // 그 외면 F
        
        // A학점
        // B학점
        if (avg >= 90) {
            System.out.println("A학점");
        } else if (avg >= 80) {
            System.out.println("B학점");
        } else if (avg >= 70) {
            System.out.println("C학점");
        } else if (avg >= 60) {
            System.out.println("D학점");
        } else {
            System.out.println("F학점");
        }
            
        }
    
    }
cs

 

 

 

* 사용자에게 성적 입력 받으면 학점 출력 > Scanner / if ~ else if 문

 

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
package day03;
import java.util.Scanner;
public class StatementTest16 {
 
    public static void main(String[] args) {
        
        // 표준 출력 장치로부터 문자열 입력 받아 출력
        System.out.println("성적 입력 : ");
        
        Scanner sc = new Scanner(System.in);
        
        // 입력받은 문자열을 int형으로 가져와서 score 변수에 할당한다.
        int score = sc.nextInt();
        
        System.out.println("score : " + score);
        
        // 당신의 점수는 XXX이며 학점은 A 입니다
        String grade = "";
        if (score >= 90) {
            grade = "A";
        } else if (score >= 80) {
            grade = "B";
        } else if (score >= 70) {
            grade = "C";
        } else if (score >= 60) {
            grade = "D";
        } else {
            grade = "F";
        }
        
        System.out.println("당신의 점수는 " + score + 
                "이며 학점은 " + grade + "입니다");
    }
 
}
cs

 

 

*  사용자에게 성적 입력 받으면 학점 출력 > case 문

 

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
package day03;
// 백문이 불여일타
// IT < == 프로그램 공부는 책으로.. xxx
import java.util.Scanner;
public class StatementTest17 {
 
    public static void main(String[] args) {
    
        System.out.println("성적 입력 : ");
        Scanner sc = new Scanner(System.in);
        int score = sc.nextInt();    
        System.out.println("score : " + score);
        String grade = "";
        
        // switch (값) {
        // case X :
        //        문장1;
        //         문장2;
        // }
        // case X2
        //        문장1;
        //        문장2;
        // }
        // 99, 98, 93 즉 10으로 나눈 몫 : 9
        switch(score/10) {
        case 10:
        case 9:
            System.out.println("A학점");
            break;
        case 8:
            System.out.println("B학점");
            break;
        case 7:
            System.out.println("C학점");
            break;
        case 6:
            System.out.println("D학점");
            break;
        default :
            System.out.println("F학점");
        }
        
    }
 
}
cs

 

 

* 구구단 2단을 세 번 출력 > 이중 for문

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package day03;
 
public class StatementTest19 {
    public static void main(String[] args) {
        // 이중 for문
        
        // 구구단 2단 세 번 출력
        for (int j = 1; j<=3; j++){
            for(int i = 1; i<=9; i++) {
                System.out.println(j + " : " +j+ " * " + i + " = " + j*i);
            }
            System.out.println("---------------------");
        }
    }
}
cs

 

 

* 주사위 2개로 가능한 모든 경우의 수 표시 > 이중 for 문

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package day03;
 
public class StatementTest20 {
    public static void main(String[] args) {
        // 주사위 2개의 눈금 표시
        // 가능한 모든 경우의 수를 다 표시하고 싶다.
        
        
        // 주사위 1개의 눈금 개수를 출력 (가능한 모든 수)
        
        // 1번째 주사위 눈 수 : 1
        // 1번째 주사위 눈 수 : 2
        for(int j=1; j <=6; j++) {
            for (int i = 1; i<= 6; i++) {
                System.out.println("2번째 주사위 눈 수 : " + j + ", 1번째 주사위 눈 수 : " + i);
            }
        }
    }
    
}
cs

 

 

* 그 사람의 띠를 출력해주는 프로그램 작성 > Scanner / if ~ else if 문

 

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
package day03;
import java.util.Scanner;
public class StatementTest21 {
 
    public static void main(String[] args) {
        // 띠 : 12간지
        // 그 사람의 띠를 출력해주는 프로그램 작성
        // 자 축 인 묘 진 사 오 미 신 유 술 해
        // 쥐|소|호|토|용|뱀|말|양|원|닭|개|돼
        // 4 5 6 7 8 9 10 11 0 1 2 3
        // 1. 태어난 년도 4자리를 입력하면
        // Scanner 사용해서 태어난 년도 4자리를 입력받아서 콘솔에 출력
        System.out.println("태어난 년도 4자리 입력하세요 : ");
        Scanner sc = new Scanner(System.in);
        int year = sc.nextInt();
        
        System.out.println("입력한 년도 : " + year);
        
        // 어떤 띠인지 판별을 위해 태어난 년도를 12로 나눈 나머지를 알아낸다.
        year%=12;
        System.out.println("나머지 : " + year);
    
        // 이때 얻은 값을 가지고 띠를 판별한다.
 
        if(year ==4) {
            System.out.println("당신은 쥐띠");
        } else if(year == 5) {
            System.out.println("당신은 소띠");
        } else if(year == 6) {
            System.out.println("당신은 호랑이띠");
        } else if(year == 7) {
            System.out.println("당신은 토끼띠");
        } else if(year == 8) {
            System.out.println("당신은 용띠");
        } else if(year == 9) {
            System.out.println("당신은 뱀띠");
        } else if(year == 10) {
            System.out.println("당신은 말띠");
        } else if(year == 11) {
            System.out.println("당신은 양띠");
        } else if(year == 0) {
            System.out.println("당신은 원숭이띠");
        } else if(year == 1) {
            System.out.println("당신은 닭띠");
        } else if(year == 2) {
            System.out.println("당신은 개띠");
        } else if(year == 3) {
            System.out.println("당신은 돼지띠");
        }
 
 
    }
 
}
cs

 

 

* 정수, 문자 변수 출력 > printf, println

 

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
package day03;
 
public class StatementTest22 {
 
    public static void main(String[] args) {
        // 3월 6일 출력
        
        System.out.println("3월 6일");
        
        int year = 2023;
        int month = 3;
        int day = 6;
        
        // 오늘은 2023년 3월 6일 입니다. 출력
        
        System.out.println("오늘은 " + year + "년 " + month + "월 " + day + "일 입니다.");
        
        System.out.printf("오늘은 %d년 %d월 %d일 입니다.\n", year, month, day); //c언어 스타일
 
        
        // 첫번째 : 출력 형식
        // 두번째 값을 할당
        
        // %d : 정수, %b : 논리, %c : 문자, %f : 실수, %s : 문자열을 의미
        
        // hour, minute, second
        // 현재 시간은 2시 40분 50초 입니다.
        int hour = 2;
        int minute = 40;
        int second = 50;
        // 자바 스타일
        System.out.println("현재 시간은 " + hour + "시 " + minute + "분 " + second + "초 입니다.");
        // C 스타일
        System.out.printf("현재 시간은 %d시 %d분 %d초 입니다.\n", hour, minute, second);
        
        String nation = "한국";
        System.out.println(nation + " 현재 시간은 " + hour + "시 " + minute + "분 " + second + "초 입니다.");
        System.out.printf("%s 현재 시간은 %d시 %d분 %d초 입니다.\n", nation, hour, minute, second);
 
        // 변수명 : name age height weight
        // 내 이름은 홍길동 이고 나이는 20살 키는 182.3 몸무게는 75.3 입니다.
        String name = "홍길동";
        int age = 20;
        float height = 182.3f;
        float weight = 75.3f;
        System.out.println("내 이름은 " + name + " 이고 나이는 " + age + "살 키는 " + height + " 몸무게는 " + weight + "입니다.");
        System.out.printf("내 이름은 %s 이고 나이는 %d살이고 키는 %f 몸무게는 %f 입니다.\n", name, age, height, weight);
    }
 
 
}
cs

 

 

[ 응용 ]

 

* 사용자의 입력값을 받아 해당 단의 짝수 결과만 출력

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package day03;
import java.util.Scanner;
public class quiz2번 {
 
    public static void main(String[] args) {
        
        System.out.println("몇 단?");
        
        Scanner sc = new Scanner(System.in);
        int value = sc.nextInt();
        for (int i = 1; i<=9; i++) {
            if ((value*i)%2 == 0) {
            System.out.println(value + " * " + i + " = " + value*i);
    }
        }
    }
}
cs

 

 

* 증가했다가 감소하는 별 출력 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package day03;
 
public class quiz3번 {
 
    public static void main(String[] args) {
        
        for (int j = 1; j <= 5; j++) {
            for(int i = 1; i <= j; i++) {
                System.out.printf("*");
            }
            System.out.println();
        }
        
        for (int j = 4; j >= 1; j--) {
            for(int i = 1; i <= j; i++) {
                System.out.printf("*");
            }
            System.out.println();
        }
 
    }
}
cs

 

 

* 사용자로부터 입력받은 값이 3의 배수인지 아닌지 출력

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package day03;
import java.util.Scanner;
public class quiz4번 {
 
    public static void main(String[] args) {
        
        System.out.println("입력 : ");
        
        Scanner sc = new Scanner(System.in);
        int value = sc.nextInt();
                
        if (value%3 == 0) {
            System.out.println(value + "는 3의 배수입니다.");
        } else {
            System.out.println(value + "는 3의 배수가 아닙니다.");
        }
 
    }
 
}
cs

 

 

1부터 100사이의 정수 중 2 또는 3의 배수가 아닌 수의 합계

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package day03quiz;
 
public class Day03Q05 {
 
    public static void main(String[] args) {
 
        // 1. 1부터 100 사이의 정수를 출력
        
        for (int i = 1; i<=100; i++) {
            // 2. 모두 출력하는 것이 아니라 특정 조건이 되면 출력
            if (i%2 != 0 && i%3 != 0) {
            System.out.println(i);
            }
        }
 
        
        
    }
 
}
cs

 

 

* 두 개의 주사위를 던졌을 때, 합이 4가 되는 모든 경우의 수를 출력하는 프로그램

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package day03;
 
public class quiz6번 {
 
    public static void main(String[] args) {
        
        for(int j=1; j <=6; j++) {
            for (int i = 1; i<= 6; i++) {
                if (i+== 4) {
                System.out.println(i + " , " + j);
            }
            }
 
        }
    }
}
cs

 

* 1부터 50 사이의 5의 배수이면서 3의 배수인 값들의 누적합

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package day03quiz;
 
public class Day03Q07 {
    public static void main(String[] args) {
        // 1. 1부터 50 사이의 정수 출력
        int sum = 0;
        for (int i = 1; i<= 50; i++) {
            // 2. 특정 조건을 만족하면 누적합을 구하기
            if (i%5 == 0 && i%3 == 0) {
            sum += i;
            System.out.println(i + " : " + sum );
            }
        }
    }
}
cs

 

 

* 구구단 2단부터 9단까지 출력

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package day03;
// 구구단 2단부터 9단까지 출력하는 코드를 작성하시오.
// 반복문을 다시 반복할 수 있다.
public class quiz8번 {
    public static void main(String[] args) {
 
        for(int j = 2; j <= 9; j++) {
        for(int i = 1; i <= 9; i++) {
            System.out.println(j+" * "+i+" = "+j*i );
 
        }
        System.out.println("-----------------");
        }
    }
 
}
cs

 

 

* 사용자로부터 한 자리 숫자를 입력받아 해당 단을 출력

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package day03;
 
import java.util.Scanner;
 
public class quiz9번 {
 
    public static void main(String[] args) {
        
        System.out.println("몇 단?");
        
        Scanner sc = new Scanner(System.in);
        int value = sc.nextInt();
        for (int i = 1; i<=9; i++) {
            System.out.println(value + " * " + i + " = " + value*i);
        }
    }
}
cs

 

 

19단을 3가지 반복문을 사용해서 출력

 

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
package day03;
 
public class quiz10번 {
 
    public static void main(String[] args) {
        
        // for 문
        for (int i = 1; i <= 9; i++) {
        System.out.println(19+" * "+i+" = "+i*19);
        }
        System.out.println("----------");
        
        // while 문
        int i = 1;
        while (i<=9) {
            System.out.println(19+" * "+i+" = "+i*19);
            i++;
        }
        System.out.println("----------");
        
        
        // do ~ while 문
        int j = 1;
        do {
            System.out.println(19+" * "+j+" = "+j*19);
            j++;
        } while (j<=9);
        
    }
 
}
cs

 

 

* 사용자에게 입력 받아 그 수만큼 별을 줄로 출력

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package day03;
import java.util.Scanner;
public class quiz11번 {
 
    public static void main(String[] args) {
        
        System.out.println("몇 줄?");
        Scanner sc = new Scanner(System.in);
        int j = sc.nextInt();
        
        String str = "";
        for (int i = 1; i <= j; i++) {
            str += "*";
            System.out.println(str);
            
        }
    }
}
cs

 

 

* 이중 for 문을 사용해서 별 다섯 줄 출력

 

1
2
3
4
5
6
7
8
9
10
11
12
13
package day03quiz;
 
public class Day03Q12 {
    public static void main(String[] args) {
        
        for (int j = 1; j <= 5 ; j++) {
            for (int i = 1; i<= j; i++) {
            System.out.printf("*");
            }
            System.out.println();
    }
    }
}
cs

 

 

* 구구단 2단부터 9단까지 옆으로 출력

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package day03;
 
public class quiz13번 {
 
    public static void main(String[] args) {
 
        for(int j = 2; j <= 9; j++) {
            for(int i = 1; i <= 9; i++) {
            System.out.print(j+" * "+i+" = "+i*+ " ");
        }
            System.out.println();
        }
 
    }
 
}
cs

 

* 11111 22222 33333 44444 55555 세로로 출력

 

1
2
3
4
5
6
7
8
9
10
11
12
13
package day03;
 
public class quiz14번 {
 
    public static void main(String[] args) {
        
        for(int i = 1; i <=5; i++) {
            System.out.println("" + i+i+i+i+i);
        }
 
    }
 
}
cs

 

 

* 줄어드는 별 다섯 줄 출력

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package day03quiz;
 
public class Day03Q16 {
    
    public static void main(String[] args) {
        
        for (int j = 5; j >= 1; j --) {
            for (int i = 1; i <= j; i ++) {
                System.out.printf("*");
            }
            System.out.println();
        }
        
    }
}
cs