STUDY/JAVA
[Java] 이것이 자바다 Ch.04
Eunjng
2023. 12. 27. 22:03
'이것이 자바다' 교재 및 강의를 참고하여 정리한 내용입니다.
Ch.04 조건문과 반복문
if 문
- 중괄호 {} 블록 내 실행문이 하나라면 중괄호 생략 가능
Math.random()
-> 0.0 이상 1.0 미만의 double 타입 난수를 리턴- start부터 시작하는 n개의 정수 중 하나의 정수를 얻기 위한 코드
int num = (int) (Math.random() * n) + start;
switch 문
switch(변수) {
case 값1:
break;
case 값2:
case 값3:
break;
default:
}
// Java 12 이후부터 switch 문에서 표현식 사용 가능
switch(grade) {
case 값1, 값2 -> {
실행문
}
case 값3, 값4 -> 실행문
default -> 실행문
}
// switch Experssions 사용 시 스위치된 값을 변수에 바로 대입 가능
// - 단일 값일 경우 화살표 오른쪽에 값 기술
// - 중괄호 사용 시 yield 키워드로 값 지정 (Java 13부터 가능)
String grade = "B";
int score1 = switch(grade) {
case "A" -> 100;
case "B" -> {
int result = 100 - 20;
yield result;
}
default -> 60;
}
// Java 11 이전
int score2 = 0;
switch(grade) {
case "A":
score2 = 100;
break;
case "B":
int result = 100 - 20;
score2 = result;
break;
default:
score2 = 60;
}
- break가 없다면 case 값과는 상관없이 다음 case가 연달아 실행
for 문
for (초기화식; 조건식; 증감식;) { }
for (int i=0, j=100; i<=50 && j>=50; i++, j--) { }
- 초기화식에서 선언된 변수는 for문 블록 안에서만 사용되는 로컬 변수
- 초기화식에서 부동 소수점을 쓰는 float 타입 사용 시 정확하게 표현하지 못하기 때문에 사용X
while 문
while (조건식) { }
do-while 문
- while: 시작할 때부터 조건식을 평가하여 블록 내부를 실행할지 결정
- do-while: 블록 내부를 먼저 실행시킨 후, 실행 결과에 따라 반복 실행을 계속할지 결정
// 입력 값이 q면 종료
do {
inputString = scanner.nextLine();
} while (!inputString.equals("q"));
break 문
- for, while, do-while, switch 문 종료 시 사용
- 중첩 반복문에서 바깥쪽 반복문까지 종료하려면 바깥쪽 반복문에 레이블을 붙이고
break 레이블;
사용
Label: for (...) {
for(...) {
break Label;
}
}
continue 문
- 반복문인 for, while, do-while 문에서 사용
- for문의 증감식, while/do-while 문의 조건식으로 바로 이동
확인문제
// 4. while 문과 Math.random() 메소드를 이용해
// 두 개의 주사위를 던졌을 때 나오는 눈을 (눈1, 눈2) 형태로 출력하고,
// 눈의 합이 5가 아니면 계속 주사위를 던지고, 눈의 합이 5면 실행 멈추기
while(true) {
int n1 = (int) Math.random() * 6 + 1;
int n2 = (int) Math.random() * 6 + 1;
System.out.println("(" + n1, + ", " + n2 + ")");
if(n1 + n2 == 5) break;
}
// 5. 중첩 for 문을 이용해 방정식 4x + 5y = 60의 모든 해 구하기
for(x=1; x<=10; x++) {
for(y=1; y<=10; y++) {
if((4*x + 5*y) == 60) {
System.out.println("(" + x + ", " + y + ")");
}
}
}
// 6. 별찍기
for(int i=1; i<=5; i++) {
for(int j=1; j<=i; j++) {
System.out.print("*");
}
System.out.println();
}
// 7
Scanner sc = new Scanner(System.in);
int balance = 0;
boolean flag = true;
while(flag) {
System.out.println("-------------------------------------");
System.out.println("1.예금 | 2.출금 | 3.잔고 | 4.종료");
System.out.println("-------------------------------------");
System.out.print("선택> ");
int n = Integer.parseInt(sc.nextLine());
switch(n) {
case 1:
System.out.print("예금액>");
balance += Integer.parseInt(sc.nextLine());
break;
case 2:
System.out.print("출금액>");
balance -= Integer.parseInt(sc.nextLine());
break;
case 3:
System.out.println("잔고>" + balance);
break;
case 4:
flag = false;
break;
}
System.out.println();
}
System.out.println("프로그램 종료");