JAVA

Test042 조건문 switch문(4)

2020. 9. 3. 03:09

※ 사용자로부터 한 문자를 입력받아 입력받은 문자가 숫자인지 숫자가 아닌지를 판별하는 프로그램을 구현한다.
 단, switch-case 문을 활용하여 처리할 수 있도록 한다.

 실행 예)
 한 문자 입력 : 6
 >> 입력하신 문자는 숫자입니다.
 계속하려면 아무 키나 누르세요...

 한 문자 입력 : t
 >> 입력하신 문자는 숫자가 아닙니다.
 계속하려면 아무 키나 누르세요...



import java.io.IOException;

public class Test042 
{
	public static void main(String[] args) throws IOException
	{
		int n;

		System.out.print("한 문자 입력 : ");
		n = System.in.read();

		switch(n)
		{
			case 48: case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57:
				System.out.println("입력하신 문자는 숫자입니다."); break;
			default: 
				System.out.println("입력하신 문자는 숫자가 아닙니다."); return;
		}
	}
}

// 실행 결과

/*
한 문자 입력 : 6
입력하신 문자는 숫자입니다.
계속하려면 아무 키나 누르십시오 . . .

한 문자 입력 : d
입력하신 문자는 숫자가 아닙니다.
계속하려면 아무 키나 누르십시오 . . .
*/

'JAVA > 자바 기본 프로그래밍' 카테고리의 다른 글

Test044 반복문 while문(2)  (0) 2020.09.03
Test043 반복문 while문(1)  (0) 2020.09.03
Test041 조건문 switch문(3)  (0) 2020.09.03
Test040 조건문 switch문(2)  (0) 2020.09.03
Test039 조건문 switch문(1)  (0) 2020.09.02

Test041 조건문 switch문(3)

2020. 9. 3. 03:08

※ 사용자로부터 임의의 두 정수와 연산자를 입력받아 해당 연산자의 처리 결과를 출력하는 프로그램을 구현한다.
 단, switch 문을 활용하여 처리할 수 있도록 하며, 결과는 편의상 정수 형태로 처리한다.

 실행 예)
 첫 번째 정수 입력  : 20
 두 번째 정수 입력  : 11
 연산자 입력[+ - * / ] : -

 >> 20 - 11 = 9
 계속하려면 아무 키나 누르세요...

 첫 번째 정수 입력  : 20
 두 번째 정수 입력  : 11
 연산자 입력[+ - * / ] : $

 계속하려면 아무 키나 누르세요...

 


 

방법 ①

 

System.in.read() 메소드로 입력받은 문자의 아스키코드 값을 이용하여 조건을 따진다.

 



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

public class Test041
{
	public static void main(String[] args) throws IOException
	{
		// 방법 ①

		// 주요 변수 선언
		int a, b, result;		//--첫 번째 정수, 두 번째 정수, 연산 결과값
		int op;				//-- 연산자

		
		// 연산 및 처리
		System.out.print("첫 번째 정수 입력		: ");
		a = Integer.parseInt(br.readLine());
		System.out.print("첫 번째 정수 입력		: ");
		b = Integer.parseInt(br.readLine());
		System.out.print("연산자 입력[+ - * / ] : ");
		op = System.in.read();
		

		// + → op:43, - → op:45, * → op:42, / → op: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;	//-- 메소드 종료 → main() 메소드 종료 → 프로그램 종료
		}

		// ※ "return" 1. 값을 반환 → 메소드 호출 지점
		//			   2. 메소드의 종료
		
		// 결과 출력
		System.out.println();
		System.out.printf(">> %d %c %d = %d\n",a,(char)op,b,result);
	}        
}

방법 ②

 

입력받은 문자를 문자형 변수에 담은후 조건을 따진다.

		// 방법 ②

		// 주요 변수 선언
		int a, b, result;		//--첫 번째 정수, 두 번째 정수, 연산 결과값
		char op;				//-- 연산자

		
		// 연산 및 처리
		System.out.print("첫 번째 정수 입력		: ");
		a = Integer.parseInt(br.readLine());
		System.out.print("첫 번째 정수 입력		: ");
		b = Integer.parseInt(br.readLine());
		System.out.print("연산자 입력[+ - * / ] : ");
		op = (char)System.in.read();
		

		// + → op:43, - → op:45, * → op:42, / → op:47
		// 결과 출력
		switch(op)
		{
			case '+': result = a + b; break;
			case '-': result = a - b; break;
			case '*': result = a * b; break;
			case '/': result = a / b; break;
			default: return;	//-- 메소드 종료 → main() 메소드 종료 → 프로그램 종료
		}

		// ※ "return" 1. 값을 반환 → 메소드 호출 지점
		//			   2. 메소드의 종료
		
		// 결과 출력
		System.out.println();
		System.out.printf(">> %d %c %d = %d\n",a,op,b,result);

방법 ③

 

문자열 변수에 한문자를 입력받아 조건을 따진다.

		// 방법 ③

		// 주요 변수 선언
		int a, b, result;		//--첫 번째 정수, 두 번째 정수, 연산 결과값
		String op;				//-- 연산자

		
		// 연산 및 처리
		System.out.print("첫 번째 정수 입력		: ");
		a = Integer.parseInt(br.readLine());
		System.out.print("첫 번째 정수 입력		: ");
		b = Integer.parseInt(br.readLine());
		System.out.print("연산자 입력[+ - * / ] : ");
		op = br.readLine();
		

		// + → op:43, - → op:45, * → op:42, / → op:47
		// 결과 출력
		switch(op)
		{
			case "+": result = a + b; break;
			case "-": result = a - b; break;
			case "*": result = a * b; break;
			case "/": result = a / b; break;
			default: return;	//-- 메소드 종료 → main() 메소드 종료 → 프로그램 종료
		}

		// ※ "return" 1. 값을 반환 → 메소드 호출 지점
		//			   2. 메소드의 종료
		
		// 결과 출력
		System.out.println();
		System.out.printf(">> %d %s %d = %d\n",a,op,b,result);

실행 결과

 

// 실행 결과
/*
첫 번째 정수 입력               : 5
첫 번째 정수 입력               : 9
연산자 입력[+ - * / ] : +

>> 5 + 9 = 14
계속하려면 아무 키나 누르십시오 . . .
*/

Test040 조건문 switch문(2)

2020. 9. 3. 03:00

※ 1부터 3까지의 정수 중 하나를 사용자로부터 입력받아 입력받은 정수만큼의 별문자(★)가 출력되는 프로그램을 작성한다. 단, 두 가지 방법으로 구현할 수 있도록 한다.

 ① switch 문의 일반 모델을 사용하여 문제를 해결한다.
 ② switch 문의 기본 모델을 사용하되 break 를 딱 한 번만 사용하여 문제를 해결한다.

 실행 예)
 임의의 정수 입력(1~3) : 3 
 ★★★
 계속하려면 아무 키나 누르세요...

 임의의 정수 입력(1~3) : 1
 ★
 계속하려면 아무 키나 누르세요...

 임의의 정수 입력(1~3) : 7 
 입력 오류~!!!
 계속하려면 아무 키나 누르세요...


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

public class Test040
{
	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 3: 
				System.out.print("★");
			case 2: 
				System.out.print("★");
			case 1:
				System.out.print("★\n");break;
			default:
				System.out.println("입력 오류 ~!!!");
		}

	}
}
// 실행 결과
/*
임의의 정수 입력(1~3) : 1
★
계속하려면 아무 키나 누르십시오 . . .

임의의 정수 입력(1~3) : 2
★★
계속하려면 아무 키나 누르십시오 . . .

임의의 정수 입력(1~3) : 3
★★★
계속하려면 아무 키나 누르십시오 . . .

임의의 정수 입력(1~3) : 4
입력 오류 ~!!!
계속하려면 아무 키나 누르십시오 . . .
*/

Test039 조건문 switch문(1)

2020. 9. 2. 21:51

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

○ 형식 및 구조 
    switch(수식)
    {
           case 상수1 : 문장1; [break;]
           case 상수1 : 문장1; [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 Test039
{
	public static void main(String[] args) throws IOException
	{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String name;
		int kor,eng,mat,avg;
		char grade;
		
		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());
		
		avg = (kor+eng+mat) / 3;
		grade = 'F';
		
		/*
		if(avg>=90)
			grade = 'A';
		else if(avg>=80)
			grade = 'B';
		else if(avg>=70)
			grade = 'C';
		else if(avg>=60)
			grade = 'D';
		else
			grade = 'F';
		*/

		switch (avg/10)
		{
		case 10: case 9: grade = 'A'; break;
		case 8: grade = 'B'; break;
		case 7: grade = 'C'; break;
		case 6: grade = 'D'; break;
		//default: grade = 'F'; break;

		
		}
		System.out.println();
		System.out.printf("당신의 이름은 %s 입니다\n",name);
		System.out.printf("총점은 %d, 평균은 %d 입니다.\n",(kor+eng+mat),avg);
		System.out.printf("등급은 %c 입니다.\n",grade);
	}
}

// 실행 결과
/*
이름 입력 : 조윤상
국어점수 입력 : 90
영어점수 입력 : 70
수학점수 입력 : 90

당신의 이름은 조윤상 입니다
총점은 250, 평균은 83 입니다.
등급은 B 입니다.
계속하려면 아무 키나 누르십시오 . . .
*/

※ 사용자로부터 알파벳 한 문자를 입력받아 이를 판별하여 입력받은 알파벳이 모음(a e i o u)일 경우만 결과를 출력하는 프로그램을 구현한다. 단, 대소문자를 모두 적용할 수 있도록 처리한다. 또한, 알파벳 이외의 문자가 입력되었을 경우 입력 오류에 대한 내용을 사용자에게 안내해 줄 수 있도록 한다.

 실행 예)
 알파벳 한 문자 입력 : A
 >> 모음 OK~!!!
 계속하려면 아무 키나 누르세요...

 알파벳 한 문자 입력 : e
 >> 모음 OK~!!!
 계속하려면 아무 키나 누르세요...

 알파벳 한 문자 입력 : B
 계속하려면 아무 키나 누르세요...

 알파벳 한 문자 입력 : 3
 >> 입력 오류~!!!
 계속하려면 아무 키나 누르세요...


import java.io.IOException;

public class Test038
{
	public static void main(String[] args) throws IOException
	{
		int a;		// 입력받을 문자

		System.out.print("알파벳 한 문자 입력 : ");
		a = System.in.read();
		//65 69 73 79 85 (A E I O U)
		//97 101 105 111 117 (a e i o u)
		if(a <= 122 && a >= 65)
		{
			if(a == 65 || a == 69 || a == 73 || a == 79 || a == 85 || a == 97 || a == 101 || a == 105 || a == 111 || a == 117)
			{
				System.out.println(">> 모음 OK~!!!");
			}
		}
		else
		{
			System.out.println(">> 입력 오류~!!!");
		}
	}
}
// 실행 결과
/*
알파벳 한 문자 입력 : a
>> 모음 OK~!!!
계속하려면 아무 키나 누르십시오 . . .

알파벳 한 문자 입력 : O
>> 모음 OK~!!!
계속하려면 아무 키나 누르십시오 . . .

알파벳 한 문자 입력 : u
>> 모음 OK~!!!
계속하려면 아무 키나 누르십시오 . . .
*/

※ 사용자로부터 임의의 정수 5개를 입력받아 짝수, 홀수별 합계를 출력하는 프로그램을 구현한다.
 단, Scanner 를 활용하여 공백으로 구분된 데이터를 한 번에 입력받아 처리할 수 있도록 한다.

 실행 예)
 정수 5개(공백구분)를 입력하세요 : 12 3 4 5 6

 >> 짝수의 합은 22이고, 홀수의 합은 8 입니다.
 계속하려면 아무 키나 누르세요...



import java.util.Scanner;

public class Test037
{
	public static void main(String[] args)
	{
		Scanner sc = new Scanner(System.in);
		int n1,n2,n3,n4,n5;
		int even=0,odd=0;
		System.out.print("정수 5개(공백구분)를 입력하세요 : : ");
		
		n1 = sc.nextInt();
		n2 = sc.nextInt();
		n3 = sc.nextInt();
		n4 = sc.nextInt();
		n5 = sc.nextInt();
		
		if(n1 % 2 ==0)
		{
			even+=n1;
		}
		else 
		{
			odd+=n1; 
		}
		
		if(n2 % 2 ==0)
		{
			even+=n2;
		}
		else 
		{
			odd+=n2; 
		}

		if(n3 % 2 ==0)
		{
			even+=n3;
		}
		else 
		{
			odd+=n3; 
		}

		if(n4 % 2 ==0)
		{
			even+=n4;
		}
		else 
		{
			odd+=n4; 
		}
		if(n5 % 2 ==0)
		{
			even+=n5;
		}
		else 
		{
			odd+=n5; 
		}
		System.out.println("짝수의 합은"+ even +"이고, 홀수의 합은" + odd + "입니다.");

	}
}

// 실행 결과
/*
정수 5개(공백구분)를 입력하세요 : : 5 1 8 1 6
짝수의 합은14이고, 홀수의 합은7입니다.
계속하려면 아무 키나 누르십시오 . . .
*/

+ Recent posts