2023. 1. 23. 00:01ㆍ항해99 시작
1. if문
개념: 조건에 따라 문장을 건너뛰거나, 반복하거나 하는 프로그램의 flow를 바꾸는 역할을 하는 문장을 '제어문(control statement)'이라고 한다.
// if 문
if(조건식){
//조건식이 참(true)일 때 수행 될 문장들을 적는다
}
// if-else문
if (조건식) {
조건식의 결과가 참일 때 실행하고자 하는 문장;
} else {
조건식의 결과가 거짓일 때 실행하고자 하는 문장;
}
// if - else if - else문
if (조건식1) {
조건식1의 결과가 참일 때 실행하고자 하는 문장;
} else if (조건식2) {
조건식2의 결과가 참일 때 실행하고자 하는 문장;
} else {
조건식1의 결과도 거짓이고, 조건식2의 결과도 거짓일 때 실행하고자 하는 문장;
즉, 위의 어느 조건식에도 만족하지 않을 때 수행
마지막 else블럭은 생략 가능.
}
조건문 예시:
class Control1_3 {
public static void main(String[] args) {
char ch = 'p';
if (ch >= 'a' && ch <= 'z') {
System.out.println("해당 문자는 영문 소문자입니다.");
} else if (ch >= 'A' && ch <= 'Z') {
System.out.println("해당 문자는 영문 대문자입니다.");
} else {
System.out.println("해당 문자는 영문자가 아닙니다.");
}
// '해당 문자는 영문 소문자입니다.' 로 출력
int score = 70;
if (score >= 90) {
System.out.println("A등급입니다.");
} else if(score >= 80) {
System.out.println("B등급입니다.");
} else if(score >= 70) {
System.out.println("C등급입니다.");
}
}
//' C등급입니다.' 로 출력
}
//중첩 if
if (조건식1) {
조건식1의 결과가 참일 때 실행하고자 하는 문장;
if (조건식2) {
조건식1 과 조건식 2의 결과가 모두 참일 때 실행하고자 하는 문장;
} else {
조건식1의 결과가 참이고, 조건식2의 결과가 거짓일 때 실행하고자 하는 문장;
}
} else {
조건식1의 결과가 거짓일 때 실행하고자 하는 문장;
}
조건식:

이외:
x = null || x.equals("") // null타입 혹은 빈자리 일때
// null은 참조형 타입(Reference type)에만 사용할 수 있다. 기본형(Primitive type) 타입의 변수에 할당하게 되면 컴파일 오류가 발생한다.
int value = null; // 컴파일 오류 발생
import java.util.Scanner;
class Ex4_5 {
public static void main(String[] args) {
int score = 0;
char grade = ' ', opt = '0';
System.out.print("점수를 입력해주세요.>");
Scanner scanner = new Scanner(System.in);// scanner 객체 생성
score = scanner.nextInt(); // 화면을 통해 입력받은 점수를 score에 저장
System.out.printf("당신의 점수는 %d입니다.%n", score);
if (score >= 90) { // score가 90점 보다 같거나 크면 A학점(grade)
grade = 'A';
if (score >= 98) { // 90점 이상 중에서도 98점 이상은 A+
opt = '+';
} else if (score < 94) { // 90점 이상 94점 미만은 A-
opt = '-';
}
} else if (score >= 80){ // score가 80점 보다 같거나 크면 B학점(grade)
grade = 'B';
if (score >= 88) {
opt = '+';
} else if (score < 84) {
opt = '-';
}
} else { // 나머지는 C학점(grade)
grade = 'C';
}
System.out.printf("당신의 학점은 %c%c입니다.%n", grade, opt);
}
}
2. switch문:
if 문과 달리 switch문은 단 하나의 조건식으로 많은 경우의 수를 처리할 수 있고, 표현도 간결하므로 알아보기 쉽다.
switch문의 제약조건:
1. switch문의 조건식 결과는 정수 또는 문자열이어야 한다.
2. case문의 값은 정수 상수(문자 포함), 문자열만 가능하며, 중복되지 않아야 한다.
switch문 계산 순서:
1. 조건식을 계산한다.
2. 조건식의 결과와 일치하는 case문으로 이동한다.
3. 이후의 문장들을 수행한다.
4. break문이나 switch문의 끝을 만나면 switch문 전체를 빠져나간다. 단, break; 를 작성해 주지 않으면 switch 문 끝까지 실행됩니다.

int num, result;
final int ONE = 1; // final이 붙어 정수 상수이다
switch (result) {
case '1': // OK. 문자 리터럴(정수 49와 동일)
case ONE: // OK. 정수 상수
case "YES" // OK. 문자열 리터럴
case num: // Error. 변수는 불가능
case 1.0: // Error. 실수도 불가능
}
3. 임의의 정수 만들기 Math.random()
난수를 얻기 위해서는 Math.ramdom()을 사용한다. 이 메서드는 0.0~1.0 사이의 범위에 속하는 하나의 double값을 반환한다.
0.0 <= Math.random() < 1.0
//1~10의 정수를 구하기를 원한다면,
// 1. 먼저 각 변에 10을 곱한다.
0.0 * 10 <= Math.random()*10 < 1.0 * 10
0.0 <= Math.random()*10 < 10.0
// 2. 각 변을 int형으로 변환한다.
(int)0.0 <=(int) Math.random()*10 < (int)10.0
0 <= (int)Math.random()*10 < 10
// 3. 각 변에 1을 더한다.
0 + 1 <= (int)(Math.random()*10) +1 < 10 + 1
1 <= (int)Math.random()*10 < 11
결과: 1~4 사이의 정수를 얻을 수 있다. 1은 포함되고 4는 포함되징 않는다.
// 예시
public class classname {
public static void main(String[] args) {
int s = (int)(Math.random()*10)+1; /
System.out.println("s:" + s);
}
}
// 결과: 1 <= s < 11 의 정수 값 1개 랜덤으로 출력된다.매번 실행 결과가 다르다.
반복문에 대해서
반복문은 for문, while문, do-while문이 있다. for 문과 while문은 구조와 기능이 비슷하여 서로 변환이 가능하다.
for문: 반복 횟수 알때 사용
while문: 반복 횟수를 모를 때 사용
4. for문
구조:
for(1. 초기화(타입 + 변수저장); 2. 조건식; 3. 증감식){
// 4. 조건식이 참(true)인 동안 수행될 문장들을 적는다.
}
// 실행 순서:
1. 초기화 > 2. 조건식 참일 경우 > 4. 문장 수행 > 3. 증감식 > 2.조건식 참일 경우
> 4 > 3 > 2 거짓일 경우 > for문 끝내기.
예시;
for(int i = 0; i<=5; i++){
System.out.println("Hello");
}
초기화: 반복문에 사용될 변수 초기화. 처음에 한번만 수행.
for(int i = 0; i<=5; i++){...}
for(int i = 0, j = 0; i<=5; i++){...} // 초기화 변수가 2개 일 경우, 콤마(,)로 구분한다.
조건식: 조건식의 값이 참(true)이면 반복실행, 거짓(false)이면 중단.
for(int i = 0; i<=5; i++){...}
증감식: 매 반복마다 변수의 값이 조건식이 거짓으로 될 때까지 증감식에 의해서 점진적으로 변하고 for문을 종료한다.
for(int i = 0; i<=5; i++){...}
위 3가지 요소가 필요하지 않으면 생략할 수 있다. 그리고 참(true)로 간주되어 무한 반복문이 된다.
for(;;){...}
중첩 for문
개념: for문 안에 또 다른 for문을 포함시키는 것이다. 중첩 횟수는 제한되지 않다.
for (초기화; 조건식1; 증감식) {
조건식1의 결과가 참인 동안 반복적으로 실행하고자 하는 문장;
for (초기화; 조건식2; 증감식) {
조건식2의 결과가 참인 동안 반복적으로 실행하고자 하는 문장;
}
}
예시: 99단 만들기
class Control3_4 {
public static void main(String[] args) {
for (int i = 2; i < 10; i++) {
System.out.println(i + "단 시작합니다.");
for (int j = 1; j < 10; j++) {
System.out.println("j는 현재 " + (j) + "입니다.");
System.out.println(i + "*" + j + "=" + (i * j));
}
}
}
}
5. While문
while (조건식) {
조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 문장;
}
// 실행 순서
// 1. 조건식
// 2. 조건식 이 참일 경우 문장 수행
// 3. 조건식이 거짓이 될 때 까지 반복
예시:
class Control5_1 {
public static void main(String[] args) {
int i = 10; // while 반복 횟수 , 즉 for 문의 초기화
// while (i-- != 0) {
// System.out.println(i);
// }
// 위 코드와 같은 동작을 수행합니다.
while (i != 0) {
i--;
System.out.println(i);
}
}
}
do-while문
// do - while: while 문과 달리 블럭{}을 먼저 수행하고 조건식을 수행한다.
do {
조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 문장;
} while (조건식);
// 실행 순서
// 1.처음 한 번은 무조건 실행
// 2.조건식
// 3.조건식 이 참일 경우 문장 수행
// 4.조건식이 거짓이 될 때 까지 반복
예시:
class Control5_3 {
public static void main(String[] args) {
int j = 1;
do {
System.out.println("do / while 문이 " + j + "번째 반복 실행중입니다.");
j++; // 이 부분을 삭제하면 무한 루프에 빠지게 됨.
} while (j < 20);
System.out.println("do / while 문이 종료된 후 변수 j의 값은 " + j + "입니다.");
}
}
6. break문
개념: 자신이 포함된 가장 가까운 반복문을 벗어난다. 무한 반복문과 조건문과 함께 사용되어 특적 조건을 만족할 때 반복문을 벗어나게 한다.
class Control6_1 {
public static void main(String[] args) {
int sum = 0;
int i = 0;
while (true) {
if(sum > 100)
break; // 조건을 만족되면여기서 while문을 완전히 벗어난다.
++i;
sum += i;
}// end of while
System.out.println("i = " + i);
System.out.println("sum = " + sum);
}
}
7. continue문
개념: 반복문 내에서만 사용될 수 있으며,반복이 진행중에 continue문을 만나면 반복문의 끝으로 이동하여 다음 반복으로 넘어간다. break 문과 달리 continue문은 반복문 전체를 벗어나지 않는다. for문은 증감식으로 이동하여 반복을 하고, while문은 조건식으로 이동한다.
예시:
class Control6_2 {
public static void main(String[] args) {
for (int i = 0; i <= 10; i++) {
// 3의 배수는 건너뜀 : 3, 6, 9
if (i % 3 == 0)
continue;// 증감식으로 이동한다. 조건식이 false 될 때까지 계속 여기서 증감식으로 이동하여 반복한다.
System.out.println("i = " + i);
}
}
}
계속하여 배열
'항해99 시작' 카테고리의 다른 글
| WIL 항해99 6주차 회고록 (0) | 2023.02.28 |
|---|---|
| WIL 항해99 4주차 회고록 (0) | 2023.02.18 |