삼항 연산자
if - else 기반으로 한줄로 쉽게 쓸 수 있는 함수
예시문으로 적어본 삼항 연산자

int age = 20;
string message = (age >= 18) ? "성인입니다." : "미성년자입니다.";

Console.WriteLine(message);

이럼 나이가 20으로 설정 되어 있으니깐 성인입니다 가 뜬다.

그럼 age 변수에 내가 직접 써서 적용 시키는건?

int age = int.Parse(Console.ReadLine());
string message = (age >= 18) ? "성인입니다." : "미성년자입니다.";

Console.WriteLine(message);


잘 나오는구먼
간단한 조건문인 경우에는 깔끔하게 보이게끔 하는 방법으로 좋을것 같네
삼항 연산자가 최적화에 좋은 코딩인지는 모르겠지만...?

근데 'int int.Parse(string s)'의 매개 변수 's'에 대한 가능한 null 참조 인수입니다.
이런 경고가 하나 뜨는데...
null인 상태일때 오류가 발생한다는 의미인것 같은데 콘솔창에 아무것도 안쓴 상태로 엔터!

오홍 파일이 어디 위치에 있는지도 알려주고 몇번 줄에 있는 오류인지도 나와있고
입력한 값이 맞는 방식이 아니라고 하는데 빈칸은 숫자 0이 아니니깐 그게 맞는 소리긴 하네

그럼 빈칸으로 입력 했을 때 경고가 아니라 오류입니다가 뜨게끔 할 수 있겠지..?
한번 찾아보자

음.... try-catch를 이용해서 오류처리자를 사용할 수 있다고 하는데

그럼 이제 빈칸을 입력해보자!

잘 나온다!
예외처리를 해줬을 때 내가 설정해준 경고문이 나오는데
사실 아직 예외처리의 중요성은 잘 모르겠네
모를 땐 물어보러 가자
죄송해요...! 강의를 너무 대충 봤나봐;;

튜터님한테 물어보는중...

아하 완벽히 이해했어(아님)
예외처리의 가장 중요한 부분은 프로그램이 멈추지 않는다는 점!
주로 정보를 외부에서 읽어올 때 사용하면 좋다고 하셨음!
사람마다 코딩 스타일이 다르니깐 정답은 없다고
방어적으로 코딩을 짜도록 노력해보자


string input = Console.ReadLine();

switch (input)
{
	case "1":
    	Console.WriteLine();
        break
    case "2":
    	Console.WriteLine();
        break;
    default:
    	Console.WriteLine();
        break;
}

switch 를 이용해서 간단한 조건문은 손쉽게
if 는 복작한 조건문에 사용

그래서 게임에서 직업 선택할 때 사용하면 되더라
짜피 직업 선택할 때 조건이 여러개 붙어야 되는 상황이..... 있을 수도 있겠지만 보통은 선택하고 확정할지 말지 고르는 게임들이 많으니깐

rpg 게임에서는 하위 직업군을 고르고 그 다음에 전직을 하니깐 그 부분에선 switch 보다는 if문이 더 잘 어울릴것 같은데 나중에 직접 써 보면서 확인해보자


이름을 설정하고 그 값을 내보내는 방식
함수 이름은 뭐 대충 PlayerNameSet() 정도면 되지 않을까?

string playerName = "";
bool nameConfirmed = false;

while (!nameConfirmed) // 바깥쪽 루프
{
	Console.Clear();
	Console.WriteLine("원하시는 이름을 설정해주세요.");
 	Console.Write(">>");
 	playerName = Console.ReadLine()!;
    
    bool nameValid = false;
    while (!nameValid) // 안쪽 루프
    {
    	Console.WriteLine($"입력하신 이름은 '{playerName}' 입니다.");
		Console.WriteLine("1. 맞다");
		Console.WriteLine("2. 아니다");
        Console.Write(">>");
        string choice = Console.ReadLine()
        
        if (choice == "1")
        {
        	Console.WriteLine($"{playerName}님 환영합니다.");
            nameValid = true; //바깥쪽 루프 종료
            nameConfirmed = true; //안쪽 루프 종료
        }
        else if (choice == "2")
        {
        	Console.WriteLine("이름을 다시 설정합니다.");
            nameValid = true; //안쪽 루프 종료 바깥쪽 루프로 다시 시작
        }
        else
        {
        	Console.WriteLine("잘못된 입력입니다."); //안쪽 루프 다시 시작
        }
    }
}

return playerName;

while 조건으로 ! 붙임으로서 이름을 정하지 않았을때 반복되게끔 만들었다!
이 방식을 이용해 콘솔창에 문자들이 쌓여가는 걸 더이상 볼 필요가 없게되서 기분이 편안
처음에는 안쪽 while을 빼고 만들어서 실행시켜 보니
2번을 선택했을 때 자꾸 로그가 점점 쌓여가서 보기 불편했는데...
다행이 이중 while은 사용에 문제가 없다는 것을 찾게되서 바로 적용

이중 while은 정말 많이 사용했는데 나중에 주석 달아서 설명도 써놔야지
나중에 다시 봤을 때 내가 이해 못할것 같아 ㅋㅋ;;

0개의 댓글