C#

[C# 기초공부] 표준 입력

zoozoo2 2023. 1. 4. 03:17
  • Console.ReadKey() : 사용자가 눌린 키 한 문자 정보를 리턴하는 메서드

🟨 함수원형

 

✔ ReadKey는 오버로딩 됨!

 

매개변수가 없는 메소드 ▶ public static ConsoleKeyInfo ReadKey () 

매개변수가 있는 메소드 ▶ public static ConsoleKeyInfo ReadKey(bool intercept)

                                        ⇒ true : 화면 출력 안함, false: 화면 출력 함

 

✔  리턴타입 ConsoleKeyInfo는 MSDN에서 찾아보면 구조체임

✔ ReadKey는 내부적으로 false가 default값임

 

 

🟧 ConsoleKeyInfo

키의 문자와 Shift, Alt, Ctrl 보조키 상태 포함

 

ConsoleKeyInfo의 속성

  • ConsoleKeyInfo.Key
  • ConsoleKey 열거형 값
  • ConsoleKey.A, Console.Escape 등 ...
  • MSDN에서 찾아 볼 것 
  • https://learn.microsoft.com/ko-kr/dotnet/api/system.consolekey?redirectedfrom=MSDN&view=net-7.0

ConsoleKeyInfo.Key에서 사용자가 A키를 눌렀다면 ConsoleKey.A 가 됨!

대신 대소문자 구분이 안됨!

 

대소문자 구분 법

→ ConsoleKeyInfo.KeyChar 를 이용해서 눌린 키의 유니코드를 얻는 속성으로 대소문자를 구분할 수있다!

 

namespace ConsoleApp4
{
    class MyClass
    {
        static void Main(string[] args)
        {
            ConsoleKeyInfo keyInfo;
            do
            {
                keyInfo = Console.ReadKey();
                if(keyInfo.Key == ConsoleKey.A)
                {
                    Console.WriteLine("a가 눌렸다");
                }
                else if(keyInfo.Key == ConsoleKey.Escape)
                {
                    Console.WriteLine("종료 뿅");
                }else
                {
                    Console.WriteLine("다른키가 눌렸다");
                }
            } while (keyInfo.Key != ConsoleKey.Escape);

        }
    }
}

출력 결과

대소문자 구분 안됨

 

 

namespace ConsoleApp4
{
    class MyClass
    {
        static void Main(string[] args)
        {
            ConsoleKeyInfo KeyInfo;
            do
            {
                KeyInfo = Console.ReadKey(true);
                if (KeyInfo.KeyChar == 'a')
                {
                    Console.WriteLine("a가 눌렸어");
                }
                else if (KeyInfo.KeyChar == 'A')
                {
                    Console.WriteLine("A가 눌렸어");
                }
                else
                {
                    Console.WriteLine("다른키가 눌렸어");
                }
            } while (KeyInfo.Key != ConsoleKey.Escape);
            {
                Console.WriteLine("종료 뿅");
            };
            

        }
    }
}

출력 결과

.KeyChar 쓰면 대소문자 구분 됨

 

 

🟪 Console.ReadLine()

엔터키가 눌려질때까지 입력 받은 문자열을 리턴하는 메서드

 

활용

입력받은 문자열을 숫자로 사용할 때는 Convert.ToInt32()등의 메서드를 사용

namespace ConsoleApp4
{
    class MyClass
    {
        static void Main(string[] args)
        {
            int Kor, Eng, Math, Total;
            float Average;
            Console.Write("국어 점수를 입력해 주세요: ");
            Kor = Convert.ToInt32(Console.ReadLine());
            Console.Write("수학 점수를 입력해 주세요: ");
            Math = Convert.ToInt32(Console.ReadLine());
            Console.Write("영어 점수를 입력해 주세요: ");
            Eng = Convert.ToInt32(Console.ReadLine());

            Total = (Kor + Math + Eng);
            Average = Total / 3.0f;
            Console.WriteLine("{0} {1} {2} {3} {4:f1}", Kor, Eng, Math, Total, Average);

        }
    }
}