<목차>
1) 조건문
1-1) switch-case 문
1-2) 예제 코드
2) 반복문
2-1) for 문
3) eclipse 실습 코드
1) 조건문
1-1) switch-case 문
switch(변수) {
case(값): --> 변수의 값이 해당 값과 일치하면 수행되는 코드
수행할 문장1
break;
case(값):
수행할 문장2
break;
...
default: --> 변수의 값이 어느 쪽도 일치하지 않으면 수행되는 코드
수행할 문장
break;
}
1-2) 예제 코드
SwitchTest1.class
package chapter04.condition;
public class SwitchTest1 {
public static void main(String[] args) {
int ranking = 2;
switch (ranking) {
case 1:
System.out.println("금메달");
break;
case 2:
System.out.println("은메달");
break;
case 3:
System.out.println("동메달");
break;
default:
System.out.println("참가상");
break;
}
}
}
SwitchTest2.class
package chapter04.condition;
public class SwitchTest2 {
public static void main(String[] args) {
int ranking = 2;
switch (ranking) {
case 1:
System.out.println("대상");
break;
case 2: case 3: // case 2, 3일 때 모두 "우수상"을 출력함!!
System.out.println("우수상");
break;
case 4: // case 4, 5일 때 모두 "장려상"을 출력함!!
case 5:
System.out.println("장려상");
break;
}
// 병합처리
int days;
int month = 5;
switch (month) {
case 2:
days = 28;
break;
case 4: case 6: case 9: case 11:
days = 30;
break;
default:
days = 31;
break;
}
System.out.println(month + "월은 " + days + "일");
}
}
SwitchTest3.class
package chapter04.condition;
public class SwitchTest3 {
public static void main(String[] args) {
String country = "china";
switch (country) {
case "korea":
System.out.println("Seoul");
break;
case "china":
System.out.println("Beijing");
break;
case "japan":
System.out.println("Tokyo");
break;
}
// 문자열 비교
String a = new String("안녕");
String b = new String("안녕");
String c = "안녕";
String d = "안녕";
System.out.println(a == b); // 주소값 비교
System.out.println(a.equals(b)); // 내용 비교
System.out.println(c == d); // 주소값 비교
System.out.println(c.equals(d)); // 내용 비교
}
}
* 참조형 데이터의 경우, 주소와 주소를 비교하기 위해서는 “==”가 아닌 “.equals()” 메소드를 사용해야 함!
- 문자열은 자주 사용하기 때문에 ‘Heap’ 내부에 “문자열 상수풀”이라는 공간이 있는데 문자열을 변수에 할당할 시 해당 문자열이 이미 문자열 상수풀에 있을 경우에는 해당 문자열의 주소를 동일하게 참조한다!
(단, new 키워드를 통해 새로운 객체변수를 생성할 시 해당 객체변수에 문자열을 값으로 할당할 경우에는 문자열 상수풀이 아닌 Heap 내부에 새로 각각 공간이 할당되어 서로 다른 주소값이 부여된다!)
SwitchTest4.class
package chapter04.condition;
public class SwitchTest4 {
public static void main(String[] args) {
int score = 82;
switch (score / 10) {
case 10: case 9:
System.out.println("A");
break;
case 8:
System.out.println("B");
break;
case 7:
System.out.println("C");
break;
default:
System.out.println("F");
break;
}
}
}
SwitchTest5.class
package chapter04.condition;
public class SwitchTest5 {
public static void main(String[] args) {
// switch 표현식
int ranking = 1;
String medal = switch (ranking) {
case 1 -> {
System.out.println("축하축하");
yield "금메달"; // yield: "return"의 역할을 수행하며, 값을 반환함!!
}
case 2 -> "은메달";
case 3 -> "동메달";
default -> "참가상";
};
System.out.println(medal + "을 수여합니다.");
}
}
2) 반복문 : 같은 문장을 반복하여 사용할 경우 반복 조건, 반복 횟수의 제어를 통해 반복 처리
- while 문
- do-while 문
- for 문
- 예약어 break, continue – 반복문을 제어
(1) while 문 : 조건식을 만족한다면 while 문 안의 수행문들을 순차적으로 반복 실행
while (조건식) {
수행문 1;
...
수행문 2;
...
}
(2) do-while 문
do { --> 조건식을 비교하기 전이지만 do문 안의 수행문들을 일단 실행
수행문 1;
...
수행문 2;
...
} while (조건식) --> 조건식을 만족한다면 do문 안의 수행문들을 순차적으로 반복 실행
(3) for 문
for (초기화; 조건식; 증감식) {
수행문 1;
수행문 2;
...
}
// 초기화 : for 문 안에서 사용할 제어변수를 초기화
// 조건식 : 반복문 안의 수행문을 실행할지 정하는 조건 판별
// 증감식 : 제어변수를 사용할 경우, 변화를 주는 증감식
2-1) for 문
ForTest1.class
package chapter05.loop;
public class ForTest1 {
public static void main(String[] args) {
int a = 100;
// for (초기화식; 조건식; 증감식) {}
for (int i = 1; i <= 5; i++) {
System.out.println(a);
System.out.println(i + "번 학생 성적 처리");
}
}
}
ForTest2.class
package chapter05.loop;
public class ForTest2 {
public static void main(String[] args) {
for (int i = 0, j = 1; i < 5; i++, j += 2) {
System.out.println("i=" + i + ", j=" + j);
}
/*
// 무한 루프 식
for ( ; ; ) {
System.out.println("무한 루프");
}
*/
}
}
ForTest3.class
package chapter05.loop;
public class ForTest3 {
public static void main(String[] args) {
int sum = 0;
int sum2 = 0;
for (int i = 0; i <= 100; i++) {
sum += i; // sum = sum + i;
}
System.out.println("합계: " + sum);
// 짝수만의 총합 구하는 식
for (int i = 0; i <= 100; i += 2) {
sum2 += i; // sum2 = sum2 + i;
}
System.out.println("합계: " + sum2);
// 합계 시점 구하는 식
int sum3 = 0;
int j;
for (j = 0; j < 100; j++) {
sum3 += j;
if (sum3 > 100) break;
}
System.out.println("합계가 100이 넘는 시점은 " + j + "입니다.");
}
}
3) eclipse 실습 코드
패키지 chapter04.condition
1) Switch_Example01.class
package chapter04.condition;
import java.util.Scanner;
public class Switch_Example01 {
public static void main(String[] args) {
/*
출생연도를 입력받아 띠를 출력한다.
띠는 12개이며, 연도를 12로 나누었을 때의 나머지값에 따라 아래와 같이 구분된다.
원숭이 0
닭 1
개 2
돼지 3
쥐 4
소 5
호랑이 6
토끼 7
용 8
뱀 9
말 10
양 11
출력결과 :
연도를 입력하세요: 2001
2001년생은 뱀띠입니다.
*/
Scanner scan = new Scanner(System.in);
System.out.print("연도를 입력하세요: ");
int year = scan.nextInt();
String animal = "";
switch (year % 12) {
case 0:
animal = "원숭이";
break;
case 1:
animal = "닭";
break;
case 2:
animal = "개";
break;
case 3:
animal = "돼지";
break;
case 4:
animal = "쥐";
break;
case 5:
animal = "소";
break;
case 6:
animal = "호랑이";
break;
case 7:
animal = "토끼";
break;
case 8:
animal = "용";
break;
case 9:
animal = "뱀";
break;
case 10:
animal = "말";
break;
case 11:
animal = "양";
break;
}
System.out.println(year + "년생은 " + animal + "띠입니다.");
}
}
2) Switch_Example02.class
package chapter04.condition;
import java.util.Scanner;
public class Switch_Example02 {
public static void main(String[] args) {
/*
계산기
정수 2개와 연산자(+, -, *, /)를 입력받아 결과를 출력한다.
단, 분모가 0일 경우 "0으로 나눌 수 없습니다"를 출력한다.
출력 결과 :
연산자 (+, -, *, /): /
정수1 입력: 3
정수2 입력: 0
0으로 나눌 수 없습니다.
*/
Scanner scan = new Scanner(System.in);
System.out.print("연산자(+, -, *, /): ");
String calculate = scan.next();
System.out.print("정수1 입력: ");
int num1 = scan.nextInt();
System.out.print("정수2 입력: ");
int num2 = scan.nextInt();
// 내 version
switch (num2) {
case 0:
System.out.println("0으로 나눌 수 없습니다.");
break;
default:
switch (calculate) {
case "+":
System.out.println(num1 + num2);
break;
case "-":
System.out.println(num1 - num2);
break;
case "*":
System.out.println(num1 * num2);
break;
case "/":
System.out.println(num1 / num2);
break;
}
break;
}
// 교수님 version
switch (calculate) {
case "+":
System.out.println(num1 + num2);
break;
case "-":
System.out.println(num1 - num2);
break;
case "*":
System.out.println(num1 * num2);
break;
case "/":
if (num2 == 0) {
System.out.println("0으로 나눌 수 없습니다.");
System.exit(0);
}
System.out.println(num1 / num2);
break;
default:
System.out.println("잘못 입력했습니다.");
break;
}
}
}
패키지 chapter05.loop
1) Loop_Example01.class
package chapter05.loop;
public class Loop_Example01 {
public static void main(String[] args) {
/*
출력 결과 :
0 1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9 10
1 3 5 7 9
0 2 4 6 8 10
10 20 30 40 50 60 70 80 90 100
5 4 3 2 1
10000 1000 100 10 1
*/
// 0 1 2 3 4 5 6 7 8 9
for (int i = 0; i < 10; i++) {
System.out.print(i + " ");
}
System.out.println();
// 1 2 3 4 5 6 7 8 9 10
for (int i = 1; i <= 10; i++) {
System.out.print(i + " ");
}
System.out.println();
// 1 3 5 7 9
for (int i = 1; i < 10; i += 2) {
System.out.print(i + " ");
}
System.out.println();
// 0 2 4 6 8 10
for (int i = 0; i <= 10; i += 2) {
System.out.print(i + " ");
}
System.out.println();
// 10 20 30 40 50 60 70 80 90 100
for (int i = 10; i <= 100; i += 10) {
System.out.print(i + " ");
}
System.out.println();
// 5 4 3 2 1
for (int i = 5; i > 0; i--) {
System.out.print(i + " ");
}
System.out.println();
// 10000 1000 100 10 1
for (int i = 10000; i > 0; i /= 10) {
System.out.print(i + " ");
}
System.out.println();
}
}
'Java' 카테고리의 다른 글
Java(6) - 반복문(for 문) 예제 풀이 (0) | 2024.04.17 |
---|---|
Java(5) - 반복문(while 문, do-while 문, for 문) (0) | 2024.04.16 |
Java(3) - 제어문(if 조건문), eclipse 실습 코드 (0) | 2024.04.12 |
Java(2) - 변수, 진수, 데이터 타입, 연산자 (0) | 2024.04.11 |
Java(1) - 개발 환경 설정(JDK 및 IDE 설치), 변수, 자료형, 형 변환 (0) | 2024.04.09 |