다차원 배열

다차원 배열을 만들고 접근해보자.

String[] ford = {"Mustang", "F-150", "Explorer"};
String[] chevy = {"Corvette", "Camaro", "Silverado"};
String[] toyota = {"Corolla", "Camry", "Rav4"};

String[,] parkingLot = { { "Mustang", "F-150", "Explorer" },
                         { "Corvette", "Camaro", "Silverado" }, 
                         { "Corolla", "Camry", "Rav4" } 
                       };

parkingLot[0, 2] = "Fusion";
parkingLot[2, 0] = "Tacoma";

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

배열과 마찬가지로 0부터 시작하며 2차원이므로 인덱스를 두 개 입력해주어야 한다.

2차원 배열을 표현해주기 위해 for문을 이용하여 출력할 수 있다.

String[] ford = {"Mustang", "F-150", "Explorer"};
String[] chevy = {"Corvette", "Camaro", "Silverado"};
String[] toyota = {"Corolla", "Camry", "Rav4"};

String[,] parkingLot = { { "Mustang", "F-150", "Explorer" },
                         { "Corvette", "Camaro", "Silverado" }, 
                         { "Corolla", "Camry", "Rav4" } 
                       };

parkingLot[0, 2] = "Fusion";
parkingLot[2, 0] = "Tacoma";

for(int i = 0; i < parkingLot.GetLength(0); i++)
{
    for(int j = 0; j < parkingLot.GetLength(1); j++)
    {
        Console.Write(parkingLot[i, j] + " ");
    }
    Console.WriteLine();
}

 

 

 

문자열 보간

문자열 리터럴에 변수를 삽입할 수 있다. 문자열 리터럴 앞에 $를 붙이고 중괄호{ }로 표시한다.

 

일반적으로 문자열을 출력하는 방법에는 아래의 방법이 있다.

String firstName = "김";
String lastName = "코딩";
int age = 5;

Console.WriteLine("안녕하세요." + firstName + " " + lastName + "입니다.");
Console.WriteLine("저는 " + age + "살 입니다.");

그러나 이는 변수와 문장을 연결해야해서 번거롭다. 더 간단하게 쓸 수 있는 방법이 바로 문자열 보간이다.

Console.WriteLine($"안녕하세요. {firstName}{lastName}입니다.");
Console.WriteLine($"저는 {age}살 입니다.");

변수에 공간을 추가하고 싶다면 쉼표를 찍고 원하는 만큼의 숫자를 써주면 된다.

Console.WriteLine($"안녕하세요. {firstName}{lastName}입니다.");
Console.WriteLine($"저는 {age, 10}살 입니다.");

오른쪽에 공간을 주고 싶다면 음수를 입력하면 된다.

Console.WriteLine($"안녕하세요. {firstName}{lastName}입니다.");
Console.WriteLine($"저는 {age, -10}살 입니다.");

 

 

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

27. 조건 연산자(Conditional Operator)  (0) 2023.10.11
26. 예외 처리(Exception)  (0) 2023.10.11
25. params 키워드(Params Keyword)  (0) 2023.09.28
24. 오버로딩(Method Overloading)  (0) 2023.09.26
23. 리턴(Return Keyword)  (0) 2023.09.20
조건 연산자

조건이 참 또는 거짓인 경우 조건부적으로 배치된다.

double temperature = 20;
Console.WriteLine((temperature >= 15) ? "날씨가 따듯하네요." : "날씨가 춥네요.");

위의 조건은 참이므로 앞의 메세지가 출력된다.

if~else문을 일부 대체 할 수 있으며 짧아서 쓰기 편리하다.

 

 

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

28. 문자열 보간(String Interpolation)  (0) 2023.10.12
26. 예외 처리(Exception)  (0) 2023.10.11
25. params 키워드(Params Keyword)  (0) 2023.09.28
24. 오버로딩(Method Overloading)  (0) 2023.09.26
23. 리턴(Return Keyword)  (0) 2023.09.20
예외

예외란 실행 중 발생하는 오류이다.

 

try: 예외가 발생할 수 있는 코드를 시도한다.

catch: 예외가 발생했을 때 발견하고 처리한다.

finally: 예외가 발생하든 안하든 상관없이 항상 실행한다.

 

int x;
int y;
double result;

try
{
    Console.Write("숫자1: ");
    x = Convert.ToInt32(Console.ReadLine());

    Console.Write("숫자2: ");
    y = Convert.ToInt32(Console.ReadLine());

    result = x / y;

    Console.WriteLine("결과: " + result);
}
catch (FormatException e)
{
    Console.WriteLine("숫자만 입력해주세요.");
}
catch (DivideByZeroException e)
{
    Console.WriteLine("0으로 나눌 수 없습니다.");
}
catch (Exception e)
{
    Console.WriteLine("예기치 못한 오류가 발생헀습니다.");
}

catch문은 여러 개를 추가할 수 있다. 예상치 못한 오류가 발생할 경우를 대비하기 위해 Exception e 예외를 마지막에 추가한다.

 

finally는 예외가 발생했는지 여부에 상관없이 실행되기 때문에 보통 try-catch문 뒤에 실행되도록 한다.

double x;
double y;
double result;

try
{
    Console.Write("숫자1: ");
    x = Convert.ToInt32(Console.ReadLine());

    Console.Write("숫자2: ");
    y = Convert.ToInt32(Console.ReadLine());

    result = x / y;

    Console.WriteLine("결과: " + result);
}
catch (FormatException e)
{
    Console.WriteLine("숫자만 입력해주세요.");
}
catch (DivideByZeroException e)
{
    Console.WriteLine("0으로 나눌 수 없습니다.");
}
catch (Exception e)
{
    Console.WriteLine("예기치 못한 오류가 발생헀습니다.");
}
finally
{
    Console.WriteLine("실행이 완료되었습니다.");
}

finally는 일반적으로 리셋하기 위해 열려있는 파일을 모두 닫게 만들 때 사용한다.

 

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

28. 문자열 보간(String Interpolation)  (0) 2023.10.12
27. 조건 연산자(Conditional Operator)  (0) 2023.10.11
25. params 키워드(Params Keyword)  (0) 2023.09.28
24. 오버로딩(Method Overloading)  (0) 2023.09.26
23. 리턴(Return Keyword)  (0) 2023.09.20

+ Recent posts