switch

Chae Yun·2021년 7월 25일
0

다중 선택문이라 하며, switch 문 다음의 수식 값에 따라
실행 순서를 여러 방향으로 분기할 때 사용하는 문장이다

📝형식 및 구조
switch(수식)
{
case 상수1 : 문장1; [break;]
case 상수2 : 문장2; [break;]
:
[default : 문장n+1; [break;]] ---생략가능하다는 표시로 [] 해둔거...(임의)

}

switch 문의 수식과 case의 상수는 byte,short,int,long이어야 한다.
case 문 뒤에 break;가 없는 형태인 경우
다음 case 문의 문장을 계속해서 이어서 수행하게 된다(→기본모델)

●등급

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Test036
{
	public static void main(String[] args) throws IOException

	{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

	//○연산 및 처리

		String name;
		int kor,eng,mat; 

		System.out.print("이름 입력 : ");
		name=br.readLine(); //⚠

		System.out.print("국어점수 입력 : ");
		kor= Integer.parseInt(br.readLine());

		System.out.print("영어점수 입력 : ");
		eng= Integer.parseInt(br.readLine()); //인티져

		System.out.print("수학점수 입력 : ");
		mat= Integer.parseInt(br.readLine()); //인티져

		int avg=(kor+eng+mat)/3; //편의상 정수로 처리
		int tot=kor+eng+mat;
		char grade;

		if(avg>=90)
			grade='A';
		else if(avg>=80)
			grade='B';
		else if(avg>=70)
			grade='C';
		else if(avg>=80)
			grade='D';
		else
			grade='F';

		switch(avg/10)
		{
		case 10: case 9 : grade='A';break;
		case 8: grade='B';break;
		default: grade='F';break; 
        //grade를 char grade ='F'로 초기화 해두었다면 default가 없어도 되지만 아니라면 default가 필수
		}
		System.out.printf("\n당신의 이름은 %s 입니다\n");
		System.out.printf("\n총점은 %d, 평균은%d 입니다\n",tot, avg);
		System.out.printf("\n등급은 %c 입니다\n",grade);

	}

}

●입력된 수 만큼 ★입력하기

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Test037
{
	public static void main(String[] args) throws IOException
	{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n;
		
		System.out.print("임의의 정수 입력(1~3) : ");
		n=Integer.parseInt(br.readLine());

		/*
		//①
		switch(n)
		{
			case 1 : System.out.println("★"); break;
			case 2 : System.out.println("★★"); break;
			case 3 : System.out.println("★★★"); break;
			default : System.out.println("입력오류"); 
		}
		*/

		//②
		switch(n)
		{
			case 3 : System.out.print("★"); 
			case 2 : System.out.print("★"); 
			case 1 : System.out.print("★\n");
			break;
			default : System.out.println("입력오류"); 
		}
	}
}

●연산자 처리

📝return의 의미
1. 값의 반환
2. 메소드의 종료->프로그램 종료를 의미

🍎+ → op : 43
🍎- →op : 45
🍎* →op : 42
🍎/ →op : 47

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Test038
{
	public static void main(String[] args) throws IOException
	{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		/*
		//①
		int a, b, result=0; 
		char op;

		System.out.print("첫 번째 정수 입력 : ");
		a= Integer.parseInt(br.readLine());

		System.out.print("두 번째 정수 입력 : ");
		b= Integer.parseInt(br.readLine()); //인티져

		//Integer.parseInt() 어쨌든 숫자 모양으로 되어있어야 인티져로 정수로 변경이 가능해

		System.out.print("연산자 입력 [+ - * /] : ");
		op = (char)System.in.read(); //(오류)앞은 chr, 뒤는 int라 형변환이 필요하다
		
		//+ → op : 43, -는 45, *은 42 ,/는 47
		switch(op)
		{
			case 43 : result=a+b; break; 
			case 45 : result=a-b; break; 
			case 42 : result=a*b; break; 
			case 47 : result=a/b; break; 
			//default : return; //result를 0으로 초기화하지 않은 경우
		}

		System.out.println();
		System.out.printf(">>%d %c %d=%d\n", a,op,b,result);
		*/

		//②
		int a, b, result=0; 
		char op;

		System.out.print("첫 번째 정수 입력 : ");
		a= Integer.parseInt(br.readLine());

		System.out.print("두 번째 정수 입력 : ");
		b= Integer.parseInt(br.readLine()); //인티져

		//Integer.parseInt() 어쨌든 숫자 모양으로 되어있어야 인티져로 정수로 변경이 가능해

		System.out.print("연산자 입력 [+ - * /] : ");
		op = (char)System.in.read(); //(오류)앞은 chr, 뒤는 int라 형변환이 필요하다
		
		switch(op)
		{
			case 43 : result=a+b; break; 
			case 45 : result=a-b; break; 
			case 42 : result=a*b; break; 
			case 47 : result=a/b; break; 

		}


		System.out.println();
		System.out.printf(">>%d %c %d=%d\n", a,op,b,result);
		

	}
}

0개의 댓글