1. 세로 구구단 출력1
출력 예시) 2단 3단 4단 5단
6단 7단 8단 9단
코드 1)

코드 2) 좋은 코딩

2. 세로 구구단 출력2
출력 예시) 2단 3단 4단
5단 6단 7단
8단 9단
코드 1)

코드 2) 좋은 코딩

3. 세로 구구단 출력3
출력 예시) 2단 3단 4단
5단 6단 7단
8단 9단
코드 1) 좋은 코딩[코드 2에서 if 조건을 단을 출력하는 코드 안에 넣음]

코드 2)

4. 이름 붙은 반복문
for문 앞에 '이름'을 넣고 :(콜론)을 붙이면 이름 붙은 for문이 된다.
break문 또는 continue문 뒤에 for문의 이름을 붙이면 이름(out)붙인 for문까지 종료 및 실행한다.
- break 이름;
- continue 이름;
코드 예제1)

5. 세개의 정수를 임의의 수로 초기화 후 가장 큰 값과 가장 작은 값 출력하기
- Math.random()을 사용하여 10~50정수, 임의의 수(난수)로 초기화해서 그 세 정수 중에 가장 큰 값과 가장 작은 값을 출력하는 문제이다.
풀이 과정)
1. 세 정수를 받을 3개의 변수 선언
2. Math.random() 메서드를 사용하여 변수 값 초기화하기
3. 세 정수 중에 가장 큰 값을 찾기
ㄱ. 두 정수를 먼저 비교해서 큰값찾기
ㄴ. 큰값과 남은 정수를 비교해서 가장 큰값찾기
코드 1) if else문으로 큰 값을 찾는 로직 이해하기

코드 2) if else문과 동일한 로직으로 처리한 코딩

코드 3) 좋은 코딩

6. 10개의 정수를 저장할 변수를 선언하고 5~25까지의 임의의수로 초기화한 뒤 min, max 값 출력하기
- 10개의 정수를 저장할 변수를 선언하고 각각의 기억공간에 Math.random() 메서드를 사용하여 5~25까지의 임의의 수로 초기화하고 가장 큰 값, 가장 작은 값을 출력하는 문제
코드 1)

7. 확장 ASCII 코드로 문자 출력하기
[문제를 풀기 전에 참고할 사항]
// OS 윈도우에서는 개행문자 == 줄바꿈 문자 == 새줄문자 > LF(10) + CR(13)
// *** 엔터(개행)치면 '\r' + '\n' 개행하는 제어문자
// LF 10 '\n' 새줄
// CR 13 '\r' 라인이동
코드 1) 0~255 정수코드 문자를 가로로 출력
for (int i = 0; i <= 255; i++) {
System.out.printf("%1$d - '%1$c'\n", i);
}
코드 2) 한 라인에 10개씩 출력

코드 3-1) 각 라인마다 라인번호(Line Number) 붙이기

코드 3-2) 좋은 코딩

코드 4) 10개 라인 출력하고 '계속하려면 엔터를 치세요' 추가하여 엔터를 쳐야 다음 10개 라인을 출력

8. 한글자를 입력받고 ASCII 숫자로 나타내기

만약, System.in.skip(System.in.available()); 코드를 사용하지 않고 코드 자리에 아래 코드를 추가해도 실행하는데 문제가 되지는 않지만 입력값이 달라질 경우에는 코드를 수정해야한다.
ㄱ.
// System.in.read(); // 13을 읽어가서 버리겠다.(1개를 버리겠다)
// System.in.read(); // 10을 읽어가서 버리겠다.(1개를 버리겠다)
ㄴ.
// System.in.skip(3); // 키보드 버퍼에 남아있는 2개를 버리겠다.
☞ 참고
// System.in.read(); 메서드
// 1. 기능 : 입력스트림(키보드)으로 부터 다음 1바이트를 읽어서 0 ~ 255 정수를 int 값으로 반환하는 메서드
// 2. 매개변수 X
// 3. 리턴값(리턴자료형) : 0~255 int
// end of stream : 더 이상 가져올 값이 없으면 -1을 하여 값을 돌려준다(반환)
9. 제어문 + 연산자 응용 및 활용 [문제 : 1-2+3-4+5-6+7-8+9-10=-5 출력]
// 짝수일 경우 sum -= i %d +
// 홀수일 경우 sum += i %d -
코드 1)
int sum = 0;
for (int i = 1; i <= 10; i++) {
if(i % 2 == 0) { // 짝수
sum -= i;
System.out.printf("%d+", i);
} else { // 홀수
sum += i;
System.out.printf("%d-", i);
}
}
System.out.println("\b=" + sum);
코드 2) 삼항연산자 사용
int sum = 0;
for (int i = 1; i <= 10; i++) {
sum += (i % 2 == 0 ? -i : i);
System.out.printf(i%2==0 ? "%d+" : "%d-" , i);
}
System.out.println("\b=" + sum);
코드 3) 스위치 변수를 선언하여 풀이
boolean sw = false;
int sum = 0;
for (int i = 1; i <= 10; i++) {
if(sw) { // 짝수
sum -= i;
System.out.printf("%d+", i);
} else { // 홀수
sum += i;
System.out.printf("%d-", i);
}
sw = !sw; // if/else 문이 끝나면 sw 값을 반대로 바꿈
}
System.out.println("\b=" + sum);
코드 4) 좋은 코딩 [삼항연산자와 스위치 변수 사용]

8. 가위바위보 게임
- 자바의 정석 3판 p150 예제 4-7을 조금 변환한 코딩이다.
[추가한 코딩]
// 1. *** 숫자 1,2,3 유효성 검사를 한 후에 user 변수에 저장(책에서는 유효성검사 코딩 x)
// 2. 컴퓨터는 '가위'를 냈다.
// 3. 다시 게임을 하겠습니까? y
코드)
public class Ex {
public static void main(String[] args) {
// 2. ex) 컴퓨터는 보를 냈다. (배열을 선언해서 처리)
String[] rockPaperScissors = {"가위", "바위", "보"};
Scanner sc = new Scanner(System.in);
int user, com;
char con; // y OR n 입력
do {
// 1. 유효성검사
String sUser;
String regex = "[1-3]";
do {
System.out.print("가위(1), 바위(2), 보(3) 중 하나를 입력하세요.>");
sUser = sc.next();
} while (!sUser.matches(regex));
user = Integer.parseInt(sUser);
com = (int)(Math.random() * 3) + 1;
System.out.printf("당신은 \"%s\"를 냈다.\n", rockPaperScissors[user-1]);
// 2. ex) 컴퓨터는 "보"를 냈다. (배열을 선언해서 처리)
System.out.printf("컴퓨터는 \"%s\"를 냈다.\n", rockPaperScissors[com-1]);
switch (user - com) {
case 2: case -1:
System.out.println("당신이 졌습니다.");
break;
case 1: case -2:
System.out.println("당신이 이겼습니다.");
break;
case 0:
System.out.println("비겼습니다.");
break;
} // switch
System.out.println("> 가위바위보 게임 계속 하시겠습니까?(y/n)");
con = sc.next().charAt(0); // 'y' 'n'
} while (con == 'y' || con == 'Y');
System.out.println("게임 종료!");
} // main
} // class
'TIL > Java' 카테고리의 다른 글
[SIST] Java_days09 (0) | 2022.02.25 |
---|---|
[SIST] Java_days08 (0) | 2022.02.24 |
[SIST] Java_days06 (0) | 2022.02.22 |
[SIST] Java_days05 (0) | 2022.02.21 |
[Java] 대소문자 구별없이 비교하기 : equalsIgnoreCase() (0) | 2022.02.20 |