Switch문
- 값으로 처리될 수 있는 변수 또는 계산식 검사
- 해당하는 값의 case문 실행하고, break를 만나서 switch블럭 탈출
- 해당하는 값이 하나도 없다면 그냥 switch문을 빠져나가거나, default구문을 실행
허용가능한 타입
byte, short, char, int, String, enum
String menu = "=================\n"
+ "1.순대국-----8000원\n"
+ "2.김치찌게----7000원\n"
+ "3.된장찌게----7500원\n"
+ "-----------------\n"
+ "번호선택 : ";
System.out.print(menu);
Scanner sc = new Scanner(System.in);
// String choice = sc.nextInt(); // 사용자입력값을 읽어서(문자열) 정수형으로 변환후 반환
String choice = sc.next(); // 형변환 오류가 없도록 문자열처리
String menuName = "";
int price = 0;
switch(choice) {
case "1": menuName = "순대국"; price = 8000; break;
case "2": menuName = "김치찌게"; price = 7000; break;
case "3": menuName = "된장찌게"; price = 7500; break;
default : System.out.println("잘못선택하셨습니다. 종료합니다."); return;
}
System.out.printf("%s을 선택하셨습니다. 결제하실 금액은 %d원입니다.", menuName, price);
switch문 fall-through
90 ~ 100 : A
80 ~ 89 : B
70 ~ 79 : C
60 ~ 69 : D
~ 59 : F
switch문에서 case 10: 하고 아무것도 쓰지않으면, case 9 에 있는 내용으로 처리 된다.(아래 내용으로 처리)
Scanner sc = new Scanner(System.in);
System.out.print("점수 입력 : ");
int n = sc.nextInt();
char grade = 'F';
switch(n / 10) {
case 10:
case 9: grade = 'A'; break;
case 8: grade = 'B'; break;
case 7: grade = 'C'; break;
case 6: grade = 'D'; break;
}
System.out.println(grade);
For문
for(초기식;조건식;증감식){
반복처리구문 }
- 초기식 : 증감변수선언 (시작할때 딱 한번만 실행)
- 조건식 : 반복문을 실행할지 말지 결정하는 논리식
- 증감식 : 증감변수의 증감처리
초기식 - 조건식(t) - 블럭구문 - 증감식
- 조건식(t) - 블럭구문 - 증감식
- 조건식(t) - 블럭구문 - 증감식
...
- 조건식(f)
Q. 1~10의 합 구하기.
int sum=0; //반복문 시작 전에 선언되어야한다. 내부선언시 매번초기화됨.
for(int i=1;i<=10;i++) {
sum+=i;
System.out.println(i+", "+sum);
}
System.out.println(sum);
sum의 경우 , 반복문 시작 전에 선언되어야 한다. 반복문을 빠져나와서도 필요하기 때문.
반복문 내에서 선언할 경우, 반복문을 실행할 때 마다 초기화(sum=0)되는 사태가 벌어진다.
Q. 사용자에게 두 양의 정수를 입력받고 두 수 사이의 홀수 출력하기
Scanner sc=new Scanner(System.in);
System.out.print("정수1입력: ");
int n1=sc.nextInt();
System.out.print("정수2입력: ");
int n2=sc.nextInt();
if (n1>n2)
{
int temp=n2;
n2=n1;
n1=temp;}
if (n1==n2) {System.out.println("두 수 사이의 홀수가 없습니다.");}
else if(n1<n2)
{
for (int i=n1;i<=n2;i+=2)
{
if(i%2==1)
{
System.out.print(i+" ");
}
else
{
System.out.print(i+1+" ");
}
}
}
이제까지 수업을 들으면서 어려운게 없다고 생각했는데, 처음으로 고민하게 만든 코드였다.
하지만 예외사항을 철저히 지켜 clear!
강사님은 삼항비교연산으로 좀 더 클린한 코드를 짜주셨다.
switch문과 for문, 어제 배운 if문은 코딩에서 뗄래야 뗄 수 없는 필수 반복문이라고 생각한다.
익숙해지는게 최우선이고, for문만 좋아하는 나는 ㅋㅋㅋㅋㅋㅋㅋㅋ
여러가지 반복문을 최대한 활용하는 습관을 가져야 겠다.