Preface
이번 장에선 Java의 조건문과 반복문을 공부했다.
if문, for문, while문 등 간단한 제어문은 파이썬을 다룰 때 충분히 언급했다고 생각하여 상세한 설명은 작성하지 않았다.
제어문 자체를 여러 번 공부해서 그런지 크게 어려운 부분은 없었다.
한 가지 따로 공부하고 싶은 내용은 Scanner에 관한 내용인데, 책에는 간단한 소개 정도만 언급되어 있어 Scanner 클래스를 자세히 설명하는 블로그의 링크를 달아두었다.
1. 조건문
- else-if문 코드
package ch4;
public class elseIfExample {
public static void main(String[] args) {
int score = 93;
if (score >= 90) {
System.out.println("점수가 90보다 큽니다.");
System.out.println("등급은 A 입니다.");
} else if (score >= 80) {
System.out.println("점수가 80보다 큽니다.");
System.out.println("등급은 B 입니다.");
} else if (score >= 80) {
System.out.println("점수가 70보다 큽니다.");
System.out.println("등급은 c 입니다.");
} else {
System.out.println("점수가 70 미만입니다.");
System.out.println("등급은 D 입니다.");
}
}
}
- switch문: 조건 제어문으로, 변수가 어떤 값을 갖느냐에 따라 실행문이 선택된다.
1) 괄호 안의 값과 동일한 값을 갖는 case로 가서 실행문을 실행시킨다.
2) 괄호 안의 값과 동일한 값을 갖는 case가 없으면default로 가서 실행문을 실행시킨다.
→ default 값은 생략할 수 있다.
3) 괄호에는 정수 타입 변수나 정수값을 산출하는 연산식, String 타입의 변수 등이 올 수 있다.
- switch문을 사용한 주사위 코드
package ch4;
public class switchDiceExample {
public static void main(String[] args) {
int num = (int) (Math.random() * 6) + 1;
switch (num) {
case 1:
System.out.println("1번");
break;
case 2:
System.out.println("2번");
break;
case 3:
System.out.println("3번");
break;
case 4:
System.out.println("4번");
break;
case 5:
System.out.println("5번");
break;
default:
System.out.println("6번");
break;
}
}
}
2. 반복문
- for문을 작성할 때 변수를 미리 선언하여 초기화식이 필요 없을 경우에는 초기화식을 생략할 수 있다.
1) 생략해도 초기화식이 들어가는 자리에 세미콜론은 작성해야 하는 듯?
2) 초기화식이나 증감식이 둘 이상일 경우에는 쉼표로 구분해서 작성하면 된다.
int i = 1;
for (; i <= 100; i++) { ~ }
// 둘 이상의 초기화식과 증감식
for (int i = 0. j = 100; i <= 50 && j >= 50; i++, j--) { ~ }
- for문을 작성할 때 초기화식에서 루프 카운트 변수에 부동소수점 타입을 사용하면 안 된다.
- System.in.read( ): 메소드는 키보드로부터 입력된 키 코드를 리턴한다.
→ 하나의 키 코드만 읽으므로 콘솔에 입력된 문자열을 한 번에 읽을 수 없다.
- 키보드로 while문을 제어하는 코드
package ch4;
public class whileKeyControl {
public static void main(String[] args) throws Exception {
boolean run = true;
int speed = 0;
int keyCode = 0;
while (run) {
if (keyCode != 13 && keyCode != 10) {
System.out.println("----------");
System.out.println("1: 증속 | 2: 감속 | 3: 중지");
System.out.println("----------");
System.out.print("선택: ");
}
keyCode = System.in.read();
if (keyCode == 49) { // 1을 읽었을 경우
speed++;
System.out.println("현재 속도: " + speed);
} else if (keyCode == 50) { // 2를 읽었을 경우
speed--;
System.out.println("현재 속도: " + speed);
} else if (keyCode == 51) { // 3을 읽었을 경우
run = false;
}
}
System.out.println("프로그램 종료.");
}
}
- 출력 메소드
1) System.out.println( ): 매개값을 출력하고 다음 행으로 이동한다.
2) System.out.print( ): 매개값을 출력만 하고 다음 행으로 이동하지 않는다.
- do-while문: 블록 내부의 실행문을 우선 실행시키고 실행 결과에 따라 반복 실행을 계속할지 결정할 때 사용
→ while문 뒤에 반드시 세미콜론을 붙여야 한다.
package ch4;
import java.util.Scanner;
public class doWhileExample {
public static void main(String[] args) {
System.out.println("메시지를 입력하세요.");
System.out.println("프로그램을 종료하려면 q를 입력하세요.");
Scanner scanner = new Scanner(System.in); // Scanner 객체 생성
String inputString;
do {
System.out.print("> ");
inputString = scanner.nextLine(); // 키보드라 입력한 문자열을 얻음
System.out.println(inputString);
} while (!inputString.equals("q"));
System.out.println();
System.out.println("프로그램 종료.");
}
}
- Scanner 객체를 생성하고 nextLine( ) 메소드를 호출하면 콘솔에 입력된 문자열을 한 번에 읽을 수 있다.
→ Scanner을 사용하려면 import문이 필요하다.
Scanner scanner = new Scanner(System.in);
String inputString = scanner.nextLine();
- break문: 반복문을 실행 중지할 때 사용된다.
1) 반복문이 중첩되어 있을 경우 break문은 가장 가까운 반복문만 종료한다.
→ 중첩된 반복문에서 바깥쪽 반복문까지 종료시키려면 바깥쪽 반복문에 이름(라벨)을 붙인 후 "break 이름;"을 사용하면 된다.
package ch4;
public class breakOutterExample {
public static void main(String[] args) {
Outter: for (char upper = 'A'; upper <= 'Z'; upper++) {
for (char lower = 'a'; lower <= 'z'; lower++) {
System.out.println(upper + "-" + lower);
if (lower == 'g') {
break Outter;
}
}
}
System.out.println("프로그램 종료.");
}
}
- continue문: 반복문에서 사용되며, 블록 내부에서 continue문이 실행되면 for문의 증감식 또는 while문, do-while문의 조건식으로 이동한다.
'Java > 이것이 자바다' 카테고리의 다른 글
타입 변환 메소드 (2) | 2022.10.07 |
---|---|
참조 타입 (0) | 2022.10.07 |
연산자 (0) | 2022.09.30 |
자바 시작하기, 변수와 타입 (0) | 2022.09.28 |
이것이 자바다 출처 (0) | 2022.09.26 |
댓글