국비수업/수업정리
switch문
밀김
2023. 2. 22. 09:37
728x90
- for문 반복횟수 조건식은 0으로 고정해놓는게 좋다...다른숫자로 넣지 말기! i=0; i<숫자; i++
- 수정할꺼면 i=0;i<숫자; i++ 저부분을 바꾸는것이 좋다. 수식을 넣는다던가..i<j+1 이런식으로!
- if랑else는 한문장이라서 중간에 공백줄이 있으면 안됨
수학의 중요성....ㅠㅠ😭😭😭😭
- 메뉴선택 흐름에 else if문을 사용하면 항상 첫번째부터 순차적으로 진행되기 때문에, 효율성이 매우 떨어진다
- 하지만, switch문을 사용하면 그런 순차적 흐름을 거치지 않고, 바로 내가 원하는 조건으로 갈수있다
나에게 필요했던..빛과 소금의 switch문...!!
- switch는 선택문이라기보다는, 분기문(=점프)이다
- case : 를 라벨문이라고 한다
- case 라벨문을 제어하려면 밑에 break를 달아주면 된다. 그러면, 1번 선택하면 1번 선택하고 끝난다.
package ex1.operator;
import java.util.Scanner;
public class Program {
public static void main(String[] args) {
{
Scanner scan = new Scanner(System.in);
System.out.print("원하는 메뉴를 입력하세요 : ");
int menu = scan.nextInt();
switch(menu) {
case 1:
System.out.println("짜장면 하나요~");
break;
case 2:
System.out.println("짬뽕 하나요~");
break;
case 3:
System.out.println("볶음밥 하나요~");
break;
case 4:
System.out.println("군만듀 하나요~");
break;
default: //그 외의 경우 else 같은거
System.out.println("잘못 입력하셨습니다.");
}
}
}
}
- 이렇게 break를 쓰면 switch문을 벗어나는것이다. while문을 벗어날순 없음
- break에다가 라벨로 붙이면, 원하는 곳으로 가거나 나갈수 있다 단, 이 라벨은 반복문에만 붙일수 있음
package ex1.operator;
import java.util.Scanner;
public class Program {
public static void main(String[] args) {
boolean run = true;
out:
while(run)
{
Scanner scan = new Scanner(System.in);
System.out.print("원하는 메뉴를 입력하세요 : ");
int menu = scan.nextInt();
switch(menu) {
case 1:
System.out.println("짜장면 하나요~");
break;
case 2:
System.out.println("짬뽕 하나요~");
break;
case 3:
System.out.println("볶음밥 하나요~");
break;
case 4:
System.out.println("군만듀 하나요~");
break;
case 5:
System.out.println("주문 안하고 나갈게요!");
break out;
default: //그 외의 경우 else 같은거
System.out.println("잘못 입력하셨습니다.");
}
}
System.out.println("주문이 종료되었습니다.");
}
}
- 틀린 범위를 입력하면 알려주는 코드 생성
package ex1.operator;
import java.util.Scanner;
public class Program {
public static void main(String[] args) {
boolean run = true;
out:
while(run)
{
Scanner scan = new Scanner(System.in);
int menu;
System.out.print("원하는 메뉴를 입력하세요 : ");
menu = scan.nextInt();
while(!(1<=menu && menu<=6)) { //메뉴의 범위가 1~6이 아니면 (!)
//if를 넣으면 물어보고 끝나지만,while을 넣으면 제대로 값이 입력될때까지 돈다
System.out.println("메뉴는 1~6번만 입력할수 있습니다");
System.out.print("원하는 메뉴를 입력하세요:");
menu = scan.nextInt();
}
switch(menu) {
case 1:
System.out.println("짜장면 하나요~");
break;
case 2:
System.out.println("짬뽕 하나요~");
break;
case 3:
System.out.println("볶음밥 하나요~");
break;
case 4:
System.out.println("군만듀 하나요~");
break;
case 5:
System.out.println("주문 안하고 나갈게요!");
break out;
case 6: //그 외의 경우 else 같은거
System.out.println("잘못 입력하셨습니다.");
}
}
System.out.println("주문이 종료되었습니다.");
}
}
정리된 코드
package ex3.control;
import java.util.Scanner;
public class Program {
public static void main(String[] args) {
boolean run = true;//첫화면 while문을 실행하기 위한 변수
int avg=0; //성적관리에서 원하는 메뉴로 가기위한 값을 담을 변수
int kor1= 0;
int kor2= 0;
int kor3= 0;
//성적 점수 변수들
out://while문 탈출을 위한 라벨문
while(run)//true값을 갖고있는 run변수라서, 무한히 실행 된다
{
Scanner scan = new Scanner(System.in);
//사용자의 입력값을 받기 위한 스캐너
System.out.println("┌────────────────────────┐");
System.out.println("│ 성적관리 │");
System.out.println("└────────────────────────┘");
System.out.println("1.성적입력\n2.성적 출력\n3.성적 저장\n4.성적 로드\n5.종료");
System.out.print("입력>");
avg = scan.nextInt();
//입력한 값이 avg로 저장된다
while(!(1<=avg && avg<6)) { ////메뉴인,1~5 이상이 !아니면 while문이 종료된다
System.out.println("잘못된 입력입니다.\n다시 입력해주세요.");
//메뉴인,1~5 이상을 입력했을때에 나오는 에러메세지
avg = scan.nextInt();
//정상값들을 다시 입력받기 위한..
}
switch(avg) { //avg에 들어온 값들에 의해 실행되는 스위치문
case 1:
System.out.println("┌────────────────────────┐");
System.out.println("│ 성적입력 │");
System.out.println("└────────────────────────┘");
System.out.println("국어 성적을 입력하세요");
System.out.print("시험 1> ");
kor1 = scan.nextInt();
System.out.print("시험 2> ");
kor2 = scan.nextInt();
System.out.print("시험 3> ");
kor3 = scan.nextInt();
//각기다른 변수에 맞게 입력값들을 저장해준다
break;
//각 케이스문마다 꼭 필요한 브레이크문
case 2:
System.out.println("┌────────────────────────┐");
System.out.println("│ 성적출력 │");
System.out.println("└────────────────────────┘");
System.out.println(" 국어");
System.out.println(kor1);
System.out.println(kor2);
System.out.println(kor3);
//위에서 입력받은 각 성적들을 출력
break;
case 5:
System.out.println("프로그램을 종료합니다 안뇨옹~");
break out;//라벨문
}//switch
}//while
}//method
}//class
728x90