if (조건식) {
// 조건식이 참(true)일 때 수행될 문장들을 적는다.
}
** 조건식의 결과는 반드시 true 또는 false여야 한다!
if (조건식) {
// 조건식이 참(true)일 때 수행될 문장들을 적는다.
} else {
// 조건식이 거짓(false)일 때 수행될 문장들을 적는다.
}
if (score >= 90) {
grade = 'A';
} else if (80 <= score && score < 90) {
grade = 'B';
} else {
grade = 'C';
}
1. 조건식을 계산한다.
2. 조건식의 결과와 일치하는 case문으로 이동한다.
3. 이후의 문장들을 수행한다.
4. break문이나 switch문의 끝을 만나면 switch문 전체를 빠져나간다.
switch문의 제약 조건
1. switch문의 조건식 결과는 정수 또는 문자열이어야 한다.
2. case문의 값은 정수 상수(문자 포함), 문자열만 가능하며, 중복되지 않아야 한다.public static void main(String[] args) { int num, result; final int ONE = 1; ... switch(result1) { case '1' : // OK. 문자 리터럴(정수 49와 동일) case ONE : // OK. 정수 상수 case "YES" : // OK. 문자열 리터럴. JDK 1.7부터 허용 case 1.0 : // 에러. 실수는 불가 case num : // 에러. 변수도 불가 ... }
for (초기화;조건식;증감식;) {
// 조건식이 참(true)인 동안 수행될 문장들을 적는다.
}
for (;;) {...} // 조건식이 생략된 경우
while (조건식) {
// 조건식의 연산결과가 참(true)인 동안, 반복될 문장을 적는다.
}
do {
// 조건식의 연산결과가 참일 때 수행될 문장을 적는다.(처음 한번은 무조건 실행)
} while (조건식)
import java.util.*;
Class Ex4_15 {
public static void main(String[] args) {
int input = 0, answer = 0;
answer = (int)(Math.random() * 100) + 1; // 1부터 100 사이의 임의의 수를 저장
Scanner scanner = new Scanner(System.in);
do {
System.out.print("1과 100 사이의 정수를 입력하세요.>");
input = scanner.nextInt();
if (input > answer) {
System.out.println("더 작은 수로 시도해보세요.");
} else if (input < answer) {
System.out.println("더 큰 수로 다시 시도해보세요.");
}
} while (input != answer);
System.out.println("정답입니다.");
}
}
Chater 4
조건식으로 표현하기
10 < x && x < 20
ch != ' ' || ch != '\t'
ch == 'x' || ch == 'X'
'0' <= ch && ch <= '9'
'A' <= ch && ch <= 'z'
year % 400 == 0 || year % 4 == 0 && year % 100 != 0
PowerOn == false; 또는 !PowerOn
str.equals("yes");
1부터 20까지의 정수 중 2 또는 3의 배수가 아닌 수의 총합
public class Quiz4_2 {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 20; i++) {
if (i%2 != 0 && i%3 != 0) {
sum += i;
}
}
System.out.println("result = " + sum); // 73
}
}
1 + (1+2) + (1+2+3) + (1+2+3+4) + ... + (1+2+3+...+10) 의 결과를 계산하기
public class Quiz4_3 {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 10; i++) {
sum += i;
}
System.out.println("result = " + sum); // 55
}
}
1 + (-2) + 3 + (-4) + ... 과 같은 식으로 계속 더해나갔을 때, 몇까지 더해야 총합이 100 이상이 되는지 구하기
public class Quiz4_4 {
public static void main(String[] args) {
int sum = 0;
int a = 1; // 값의 부호를 바꿔줄 변수
int num = 0;
for (int i = 1; sum < 100; i++, a = -a) {
num = i * a;
sum += num;
}
System.out.println("num = " + num); // 199
System.out.println("sum = " + sum); // 100
}
}
** 이 문제에서 헷갈렸던 부분 :
다음의 for문을 while문으로 변경하기
public class Quiz4_5 {
public static void main(String[] args) {
for (int i = 0; i <= 10; i++) {
for (int j = 0; j <= i; j++)
System.out.println("*");
System.out.println();
}
}
}
// 처음에 풀었던 내용 - 오답. 무한반복되는 별을 보았음. 깜놀 ^^;;
public class Quiz4_5 {
public static void main(String[] args) {
int i = 0;
int j = 0;
while (i <= 10) {
while (j <= i) {
System.out.print("*");
}
System.out.println();
}
}
}
public class Quiz4_5 {
public static void main(String[] args) {
int i = 0;
while (i <= 10) {
int j = 0;
while (j <= i) {
System.out.print("*");
j++;
}
System.out.println();
i++;
}
}
}
** 이 문제에서 놓쳤던 부분 :
참고 도서 : 『JAVA의 정석 기초편』, 남궁 성, 도우출판