밀김 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