본문 바로가기

Unity 개발 공부

[내일배움캠프 사전캠프] 4일차 C# 캐스팅, 제어문, 반복문 프로그래밍 연습. (25.03.26)

 

1. 입력받은 데이터가 숫자인지 문자열인지 판단

 

캐스팅의 TryParse 를 응용하여 만들 수 있습니다.
입력받은 데이터가 숫자 - “숫자입니다.

 

아니라면 - “문자열입니다.

 

string input = Console.ReadLine();

int num;

bool checkinput = int.TryParse(input, out num);  

if (checkinput)
{
    Console.WriteLine("숫자입니다.");

}
else
{
    Console.WriteLine("문자열입니다.");
}

 

....

4. 입력받은 데이터가 숫자라면 짝수인지 홀수인지 알려주는 프로그램 만들기

 
입력받은 데이터가 문자라면 - “숫자가 아닙니다.
 
입력받은 데이터가 숫자라면
 
수가 짝수라면 - “xx 은(는) 짝수 입니다.
 
수가 홀수라면 - “xx 은(는) 홀수 입니다.

 

string input = Console.ReadLine();

int num;

bool checkinput = int.TryParse(input, out num);



if (!checkinput)
{
    Console.WriteLine("숫자가 아닙니다.");

}
else if(num%2 == 0)
{
    Console.WriteLine(num + "은(는) 짝수 입니다.");
}
else
{
    Console.WriteLine(num + "은(는) 홀수 입니다.");

}

 

3. 숫자를 두번 입력받아서 두번 다 숫자인지 확인

프로그램을 처음 시작하면 “첫번째 수를 입력해 주세요.” 메시지 출력
메시지를 입력하고 Enter
두번째 수를 입력해 주세요.” 메시지 출력
메시지를 입력하고 Enter
첫번째 수와 두번째 수 모두 숫자 라면 - “두 데이터는 모두 숫자입니다.
모두 숫자가 아니라면 - “숫자가 아닙니다.

 

Console.WriteLine("첫번째 수를 입력해 주세요.");
string input = Console.ReadLine();
Console.WriteLine("두번째 수를 입력해 주세요.");
string input2 = Console.ReadLine();

bool isNumber = int.TryParse(input, out int number);
bool isNumber2 = int.TryParse(input2, out int number2);

if (isNumber&&isNumber2)
{
    Console.WriteLine("두 데이터는 모두 숫자입니다.");
}
else
{
    Console.WriteLine("두 데이터 중 하나 이상이 숫자가 아닙니다.");
}

 

4.숫자를 두번 입력받아서 두 수를 비교

프로그램을 처음 시작하면 “첫번째 수를 입력해 주세요.” 메시지 출력
메시지를 입력하고 Enter
두번째 수를 입력해 주세요.” 메시지 출력
메시지를 입력하고 Enter
둘 중 하나라도 숫자가 아니라면 - “두 개의 숫자를 입력해주세요.
첫번째 수와 두번째 수 모두 숫자 라면
첫번째 수와 두번째 수가 같다면 - ”xx 와(과) xx 은(는) 같습니다.
첫번째 수와 두번째 수가 다르다면
첫번째 수가 더 크다 - “xx 은(는) xx 보다 큽니다.
첫번째 수가 작다 - “xx 은(는) xx 보다 작습니다.

 

Console.WriteLine("첫번째 수를 입력해 주세요.");
string input = Console.ReadLine();
Console.WriteLine("두번째 수를 입력해 주세요.");
string input2 = Console.ReadLine();

bool isNumber = int.TryParse(input, out int number);
bool isNumber2 = int.TryParse(input2, out int number2);

if (isNumber && isNumber2)
{
    if (number == number2)
    {
        Console.WriteLine($"{number}와(과) {number2}은(는) 같습니다.");
    }
    else
    {
        if (number > number2)
        {
            Console.WriteLine($"{number}가(이) {number2}보다 큽니다.");
        }
        else
        {
            Console.WriteLine($"{number2}가(이) {number}보다 큽니다.");
        }

    }
   
}
else
{
    Console.WriteLine("두 개의 숫자를 입력해 주세요.");
}

 

 

5. 주어진 보기를 선택하면 해당하는 선택지에 맞는 메시지 출력해주세요.

어디로 여행을 가고 싶나요? 1.제주도 2.코타키나발루 3.싱가포르 4.태국
입력한 데이터가 숫자가 아니라면 “숫자가 아닙니다.”를 출력해주세요
1 ~ 4 가 아니라면 “1~4 의 숫자를 입력해주세요.” 를 출력해주세요
1 ~ 4 의 숫자라면
제주도 “제주도는 한국의 섬으로 비교적 방문이 쉽고 다양한 놀거리/먹거리가 준비되어 있습니다.”
코타키나발루 “코타키나발루는 말레이시아 사바주의 주도로, 말레이시아 동부 보르네오섬 최대의 도시입니다.”
싱가포르 ”싱가포르는 동남아시아, 말레이 반도의 끝에 위치한 섬나라이자 항구 도시로 이루어진 도시 국가입니다.”
태국 ”태국은 중국문화, 말레이문화, 불교문화, 힌두문화, 이슬람 문화가 혼재되어 있습니다. 불교적인 모습을 많이 띄지만, 문화 자체는 색다르고 스펙트럼이 넓은 형태를 띄고 있어요.”

 

Console.WriteLine("Q.어디로 여행을 가고 싶나요?");
Console.WriteLine("1.제주도 2.코타키나발루 3.싱가포르 4.태국");

string input = Console.ReadLine();
bool answer = int.TryParse(input, out int number);

if(answer)
{
    if(number>=1 && number <= 4)
    {
        switch (number)
        {
            case 1:
                Console.WriteLine("제주도는 한국의 섬으로 비교적 방문이 쉽고 다양한 놀거리 / 먹거리가 준비되어 있습니다.");
                break;
            case 2:
                Console.WriteLine("코타키나발루는 말레이시아 사바주의 주도로, 말레이시아 동부 보르네오섬 최대의 도시입니다.");
                break;
            case 3:
                Console.WriteLine("싱가포르는 동남아시아, 말레이 반도의 끝에 위치한 섬나라이자 항구 도시로 이루어진 도시 국가입니다.");
                break;
            case 4:
                Console.WriteLine("태국은 중국문화, 말레이문화, 불교문화, 힌두문화, 이슬람 문화가 혼재되어 있습니다. 불교적인 모습을 많이 띄지만, 문화 자체는 색다르고 스펙트럼이 넓은 형태를 띄고 있어요.");
                break;
        }
    }
    else
    {
        Console.WriteLine("1~4까지의 숫자를 입력해주세요.");
    }

}
else
{
    Console.WriteLine("숫자가 아닙니다.");
}

 

 

6. Do- While 문을 이용한 문제

이름 입력하기

이름을 입력하여 3글자 이상 10글자 이하의 이름을 입력할 수 있는 프로그램을 작성합니다.
최초 메시지 출력 - “이름을 입력해주세요. (3~10글자)
이름이 3글자 미만, 10글자 초과라면 - “이름을 확인해주세요.
올바르게 입력했다면 - “안녕하세요! 제 이름은 xxx 입니다.

 

bool correctlength = true;

do
{
    Console.WriteLine("이름을 입력해주세요.(3~10글자)");
    string name = Console.ReadLine();
    Console.Clear(); // 콘솔에 표시된 줄을 지움

    correctlength = name.Length <= 10 && name.Length >= 3;


    if (correctlength)
    {
        Console.WriteLine("안녕하세요! 제 이름은 " + name + "입니다.");
        
    }
    else
    {
        Console.WriteLine("이름을 확인해주세요.");
    }
}
while (!correctlength); // do - while 문법으로 while (조건) 이 만족한다면 do를 반복함.

 

이런식으로 do - while문을 썼지만 for문이나 while문으로도 가능하다. 
예를들면.

 

for (;;) // 초기화, 조건, 증감을 전부 비워두면 무한루프로 만들수있다.
{
    Console.WriteLine("이름을 입력해주세요. (3~10글자)");
    string input = Console.ReadLine();
    Console.Clear();

    if (input.Length >= 3 && input.Length <= 10)
    {
        Console.WriteLine("안녕하세요! 제 이름은 " + input + " 입니다.");
        break; // 조건 만족했으니 반복 종료!
    }
    else
    {
        Console.WriteLine("이름을 확인해주세요.");
    }
}

 

이렇게 for문을 무한루프 만들거나,

 

while (true)
{
    Console.WriteLine("이름을 입력해주세요. (3~10글자)");
    string input = Console.ReadLine();
    Console.Clear();

    if (input.Length >= 3 && input.Length <= 10)
    {
        Console.WriteLine("안녕하세요! 제 이름은 " + input + " 입니다.");
        break; // 조건 만족했으니 반복문 탈출
    }
    else
    {
        Console.WriteLine("이름을 확인해주세요.");
        // 반복문은 계속됨
    }
}

 

하는 방법으로 말이다.