본문 바로가기
Language/C#

c# switch case 문

by ninanio3 2011. 12. 20.
switch case문이다. 자주 쓰이고 쉽지만... 모르면 고뇌할 일이 많아진다. -ㅅ-ㅋ
switch case에서 조건문에 관한 부분이 참 헷갈렸다. 입력받은 수를 int형에 넣고, switch case 문에서 조건을 범위로 주니... 범위가 먹히질 않는다. " "으로 묶은 부분을 봐선 string형으로 비교를 하는 것 같은데,,,,
라는 생각을 했다. 알고보니 switch case문은 int형으로 비교를 한다. 범위를 검색하려면 switch case문 이전에 미리 범위를 주어야 한다. 그렇지 않으면 Cannot implicitly convert type 'int' to 'string' 이러한 메시지를 만날 수 있다. 해석을 하면 string형을 int로 묵시적으로 변환할 수 없다 라는 에러다. 즉, int로 써야되는데 왜 string을 쓰냐 이거다.
switch case는 int를 쓰자. ㅎㅎ


  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. using Com.JumBo.Logic;
  7.  
  8. /*
  9.  * 문제 내용 : 15를 16진수로 변환하자.
  10.  * 학습 내용 : switch ~ case 사용법을 익힌다.
  11.  * 힌트 내용 : if문에서 else if 가 많거나, 조건식이 string 또는 int이면 if 대신 switch를 사용한다.
  12.  * */
  13.  
  14.  
  15. namespace Console_Test
  16. {
  17.     public class Program
  18.     {
  19.         static void Main(string[] args)
  20.         {
  21.             Console.WriteLine("0~15사이의 수를 16진수로 바꾸기.");
  22.             int iNum1 = int.Parse(Console.ReadLine());
  23.             Calc.Oper(iNum1);
  24.         }
  25.     }    
  26. }



  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace Com.JumBo.Logic
  7. {
  8.     public class Calc
  9.     {
  10.         public static void Oper(int n)
  11.         {
  12.             switch(n){
  13.                 case 1:
  14.                 case 2:
  15.                 case 3:
  16.                 case 4:
  17.                 case 5:
  18.                 case 6:
  19.                 case 7:
  20.                 case 8:
  21.                 case 9: Console.WriteLine("입력하신 수를 16진법으로 변환하면 {0}입니다.", n);
  22.                     break;
  23.                 case 10:
  24.                     Console.WriteLine("입력하신 수를 16진법으로 변환하면 A 입니다.");
  25.                     break;
  26.                 case 11:
  27.                     Console.WriteLine("입력하신 수를 16진법으로 변환하면 B 입니다.");
  28.                     break;
  29.                 case 12:
  30.                     Console.WriteLine("입력하신 수를 16진법으로 변환하면 C 입니다.");
  31.                     break;
  32.                 case 13:
  33.                     Console.WriteLine("입력하신 수를 16진법으로 변환하면 D 입니다.");
  34.                     break;
  35.                 case 14:
  36.                     Console.WriteLine("입력하신 수를 16진법으로 변환하면 E 입니다.");
  37.                     break;
  38.                 case 15:
  39.                     Console.WriteLine("입력하신 수를 16진법으로 변환하면 F 입니다.");
  40.                     break;
  41.                 default:
  42.                     Console.WriteLine("입력하신 수는 16을 넘어갑니다.");
  43.                     break;
  44.             }
  45.         }
  46.     }
  47. }






이 문제의 출처는

c#프로그래밍 기본기 익히기, 정보문화사


'Language > C#' 카테고리의 다른 글

c# do while문  (0) 2011.12.24
c# while문의 사용  (0) 2011.12.24
c# 친화수 구하기  (0) 2011.12.12
c# 연산자~!  (0) 2011.12.10
c#, 짝수와 홀수의 합 구하기. c#에서 class를 이용한다.  (2) 2011.12.09