ForEach문

배열을 반복하는 더 간단한 방법이지만 유연성이 떨어진다.

String[] cars = { "BMW", "Mustang", "Corvette" };

foreach (String car in cars)
{
    Console.WriteLine(car);
}

for문은 배열을 앞으로 반복하거나 뒤로 돌아가고, 건너뛰는 등 다양하게 사용할 수 있지만 foreach문은 앞으로만 반복할 수 있다.

상황에 따라 적합한 것을 사용하도록 하자.

 

 

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

23. 리턴(Return Keyword)  (0) 2023.09.20
22. 메서드 (Methods)  (0) 2023.09.19
20. 배열(Arrays)  (0) 2023.09.14
19. 계산기 프로그램(Calculator Program)  (0) 2023.09.13
18. 가위바위보 게임(Rock-Paper-Scissors Game)  (0) 2023.09.07
배열

값을 여러 개 저장할 수 있는 변수

데이터 타입 뒤에 대괄호를 붙인 뒤, 중괄호에 값을 넣어주면 된다.

String[] cars = {"BMW", "Mustang", "Corvette"};

Console.WriteLine(cars);

이대로 출력하면 배열의 데이터 타입이 나온다.

 

배열의 값을 출력하기 위해서는 인덱스 번호를 입력해주어야 한다. 인덱스 번호는 0부터 시작이다.

String[] cars = {"BMW", "Mustang", "Corvette"};

Console.WriteLine(cars[0]);
Console.WriteLine(cars[1]);
Console.WriteLine(cars[2]);

범위에서 벗어난 인덱스 번호를 입력하면 오류가 발생하므로 주의해야한다.

 

배열의 값을 바꾸고 싶다면 인덱스 번호를 지정하여 새로운 값을 넣으면 된다.

String[] cars = {"BMW", "Mustang", "Corvette"};

cars[0] = "Testla";

Console.WriteLine(cars[0]);

 

for문을 통해 배열의 모든 값을 출력할 수 있다.

String[] cars = {"BMW", "Mustang", "Corvette"};

cars[0] = "Tesla";

for (int i = 0; i < cars.Length; i++)
{
    Console.WriteLine(cars[i]);
}

 

배열의 크기는 고정되어 있다.

배열을 선언한 뒤, 지정한 인덱스 값보다 작은 값은 넣을 수 있지만 인덱스 값을 넘길 수는 없다.

String[] cars = new string[3];

cars[0] = "Tesla";
cars[1] = "Mustang";
cars[2] = "Corvette";

for (int i = 0; i < cars.Length; i++)
{
    Console.WriteLine(cars[i]);
}

 

 

계산기 프로그램
do
{
    double num1 = 0;
    double num2 = 0;
    double result = 0;

    Console.WriteLine("--------------------");
    Console.WriteLine(" Calculator Program ");
    Console.WriteLine("--------------------");

    Console.Write("첫 번째 숫자를 입력하세요: ");
    num1 = Convert.ToDouble(Console.ReadLine());

    Console.Write("두 번째 숫자를 입력하세요: ");
    num2 = Convert.ToDouble(Console.ReadLine());

    Console.WriteLine("연산기호: ");
    Console.WriteLine("\t+: 더하기");
    Console.WriteLine("\t-: 빼기");
    Console.WriteLine("\t*: 곱하기");
    Console.WriteLine("\t/: 나누기");
    Console.Write("연산기호를 입력하세요: ");

    switch (Console.ReadLine())
    {
        case "+":
            result = num1 + num2;
            Console.WriteLine($"결과: {num1} + {num2} = " + result);
            break;
        case "-":
            result = num1 - num2;
            Console.WriteLine($"결과: {num1} - {num2} = " + result);
            break;
        case "*":
            result = num1 * num2;
            Console.WriteLine($"결과: {num1} * {num2} = " + result);
            break;
        case "/":
            result = num1 / num2;
            Console.WriteLine($"결과: {num1} / {num2} = " + result);
            break;
        default:
            Console.WriteLine("해당되는 연산기호가 아닙니다.");
            break;
    }
    Console.WriteLine("계속하시겠습니까? (Y = 예, N = 아니오): ");
} while (Console.ReadLine().ToUpper() == "Y");

switch문을 통해 연산기호를 골랐을 때의 경우들을 처리하고 do while문을 통해 계속할 것인지 그만둘 것인지 처리한다.

do while문은 먼저 한 번 실행한 후, while문이 등장한다.

 

 

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

21. ForEach문(Foreach Loop)  (0) 2023.09.18
20. 배열(Arrays)  (0) 2023.09.14
18. 가위바위보 게임(Rock-Paper-Scissors Game)  (0) 2023.09.07
17. 숫자 맞추기 게임(Number Guessing Game)  (0) 2023.09.05
16. 중첩 반복문(Nested Loops)  (0) 2023.09.04
가위바위보 게임

지금까지 공부한 것을 응용하여 가위바위보 게임 프로그램을 만들어보자.

    Random random = new Random();
    bool playAgain = true;
    String player;
    String computer;
    String answer;

    while (playAgain)
    {
        player = "";
        computer = "";
        answer = "";

        while (player != "ROCK" && player != "PAPER" && player != "SCISSORS" && player != "주먹" && player != "보" && player != "바위")
        {
            Console.Write("ROCK(바위), PAPER(보), SCISSORS(가위) 중 하나를 입력하세요.: ");
            player = Console.ReadLine();
            player = player.ToUpper();
        }

        switch (random.Next(1, 4))
        {
            case 1:
                computer = "ROCK(바위)";
                break;
            case 2:
                computer = "PAPER(보)";
                break;
            case 3:
                computer = "SCISSORS(가위)";
                break;
        }

        Console.WriteLine("당신: " + player);
        Console.WriteLine("컴퓨터: " + computer);

        switch (player)
        {
            case "ROCK":
                if (computer == "ROCK(바위)")
                {
                    Console.WriteLine("- 무승부 -");
                }
                else if (computer == "PAPER(보)")
                {
                    Console.WriteLine("- 패배 -");
                }
                else
                {
                    Console.WriteLine("- 승리 -");
                }
                break;
            case "주먹":
                if (computer == "ROCK(바위)")
                {
                    Console.WriteLine("- 무승부 -");
                }
                else if (computer == "PAPER(보)")
                {
                    Console.WriteLine("- 패배 -");
                }
                else
                {
                    Console.WriteLine("- 승리 -");
                }
                break;
            case "PAPER":
                if (computer == "ROCK(바위)")
                {
                    Console.WriteLine("- 승리 -");
                }
                else if (computer == "PAPER(보)")
                {
                    Console.WriteLine("- 무승부 -");
                }
                else
                {
                    Console.WriteLine("- 패배 -");
                }
                break;
            case "보":
                if (computer == "ROCK(바위)")
                {
                    Console.WriteLine("- 승리 -");
                }
                else if (computer == "PAPER(보)")
                {
                    Console.WriteLine("- 무승부 -");
                }
                else
                {
                    Console.WriteLine("- 패배 -");
                }
                break;
            case "SCISSORS":
                if (computer == "ROCK(바위)")
                {
                    Console.WriteLine("- 패배 -");
                }
                else if (computer == "PAPER(보)")
                {
                    Console.WriteLine("- 승리 -");
                }
                else
                {
                    Console.WriteLine("- 무승부 -");
                }
                break;
            case "가위":
                if (computer == "ROCK(바위)")
                {
                    Console.WriteLine("- 패배 -");
                }
                else if (computer == "PAPER(보)")
                {
                    Console.WriteLine("- 승리 -");
                }
                else
                {
                    Console.WriteLine("- 무승부 -");
                }
                break;
        }

        Console.WriteLine("다시하기 (Y/N)");
        answer = Console.ReadLine();
        answer = answer.ToUpper();

        if (answer == "Y")
        {
            playAgain = true;
        }
        else
        {
            playAgain = false;
        }
    }

    Console.WriteLine("플레이 해주셔서 감사합니다.");

    Console.ReadKey();
}

while문을 중첩하여 다시하기를 선택했을 때와 가위(SCISSORS), 바위(ROCK), 보(PAPER) 외의 것을 입력했을 경우를 처리한다. switch문으로 컴퓨터가 랜덤으로 가위바위보 중 하나를 내보내도록 하고, if문을 통해 승패를 가른다.

 

 

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

20. 배열(Arrays)  (0) 2023.09.14
19. 계산기 프로그램(Calculator Program)  (0) 2023.09.13
17. 숫자 맞추기 게임(Number Guessing Game)  (0) 2023.09.05
16. 중첩 반복문(Nested Loops)  (0) 2023.09.04
15. For문(For Loops)  (0) 2023.08.31

+ Recent posts