조건문

코드의 참과 거짓을 판단하여 실행한다.

 

조건문 기초

// if문 기초
int playerScore = 80;

if (playerScore >= 70)
{
    Console.WriteLine("플레이어의 점수는 70점 이상입니다. 합격입니다!");
}
Console.WriteLine("프로그램이 종료됩니다.");

// else문 기초
if (itemCount > 0)
{
    Console.WriteLine($"보유한 {itemName}의 수량: {itemCount}");
}
else
{
    Console.WriteLine($"보유한 {itemName}이 없습니다.");
}

if문과 else문은 하나의 쌍이며 else문은 생략 가능하다.

 

// else if문 실습
int score = 100;
string playerRank = "";

if (score >= 90)
{
    playerRank = "Diamond";
}
else if (score >= 80)
{
    playerRank = "Platinum";
}
else if (score >= 70)
{
    playerRank = "Gold";
}
else if (score >= 60)
{
    playerRank = "Silver";
}
else
{
    playerRank = "Bronze";
}

Console.WriteLine("플레이어 등급은 {0} 입니다.", playerRank);

 

// switch문
Console.WriteLine("게임을 시작합니다.");
Console.WriteLine("1: 전사 / 2: 마법사 / 3: 궁수");
Console.Write("직업을 선택하세요: ");
string job = Console.ReadLine();

switch (job)
{
    case "1":
        Console.WriteLine("전사를 선택하셨습니다.");
        break;
    case "2":
        Console.WriteLine("마법사를 선택하셨습니다.");
        break;
    case "3":
        Console.WriteLine("궁수를 선택하셨습니다.");
        break;
    default:
        Console.WriteLine("올바른 값을 입력해주세요.");
        break;
}

Console.WriteLine("게임을 종료합니다.");

 

 

// 중첩 조건문
int itemLevel = 3; // 아이템 레벨
string itemType = "Weapon"; // 아이템 종류

if (itemType == "Weapon")
{
    if (itemLevel == 1)
    {
        // 레벨 1 무기 효과
        Console.WriteLine("공격력이 10 증가했습니다.");
    }
    else if (itemLevel == 2)
    {
        // 레벨 2 무기 효과
        Console.WriteLine("공격력이 20 증가했습니다.");
    }
    else
    {
        // 그 외 무기 레벨
        Console.WriteLine("잘못된 아이템 레벨입니다.");
    }
}
else if (itemType == "Armor")
{
    if (itemLevel == 1)
    {
        // 레벨 1 방어구 효과
        Console.WriteLine("방어력이 10 증가했습니다.");
    }
    else if (itemLevel == 2)
    {
        // 레벨 2 방어구 효과
        Console.WriteLine("방어력이 20 증가했습니다.");
    }
    else
    {
        // 그 외 방어구 레벨
        Console.WriteLine("잘못된 아이템 레벨입니다.");
    }
}
else
{
    // 그 외 아이템 종류
    Console.WriteLine("잘못된 아이템 종류입니다.");
}

 

삼항 연산자

(조건식) ? 참일 경우 값 : 거짓일 경우 값;
int currentExp = 1200;
int requiredExp = 2000;

// 삼항 연산자
string result = (currentExp >= requiredExp) ? "레벨업 가능" : "레벨업 불가능";
Console.WriteLine(result);


// if else문
if (currentExp >= requiredExp)
{
    Console.WriteLine("레벨업 가능");
}
else
{
    Console.WriteLine("레벨업 불가능");
}

 

조건문 심화

// 홀수 / 짝수 구분하기 - if문
Console.Write("번호를 입력하세요: ");
int number = int.Parse(Console.ReadLine());

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


// 홀수 / 짝수 구분하기 - 삼항 연산자
Console.Write("번호를 입력하세요: ");
string result = (int.Parse(Console.ReadLine()) % 2 == 0) ? "짝수입니다." : "홀수입니다.";
Console.Write(result);
// 등급 출력 - switch문
int playerScore = 100;
string playerRank = "";

switch (playerScore / 10)
{
    case 10:
    case 9:
        playerRank = "Diamond";
        break;
    case 8:
        playerRank = "Platinum";
        break;
    case 7:
        playerRank = "Gold";
        break;
    case 6:
        playerRank = "Silver";
        break;
    default:
        playerRank = "Bronze";
        break;
}

Console.WriteLine("플레이어의 등급은 " + playerRank + "입니다.");
// 로그인 프로그램
string id = "myid";
string password = "mypassword";

Console.Write("아이디를 입력하세요: ");
string inputId = Console.ReadLine();
Console.Write("비밀번호를 입력하세요: ");
string inputPassword = Console.ReadLine();

if (inputId == id && inputPassword == password)
{
    Console.WriteLine("로그인 성공!");
}
else
{
    Console.WriteLine("로그인 실패...");
}
// 알파벳 판별 프로그램
Console.Write("문자를 입력하세요: ");
char input = Console.ReadLine()[0];

if (input >= 'a' && input <= 'z' || input >= 'A' && input <= 'Z')
{
    Console.WriteLine("알파벳입니다.");
}
else
{
    Console.WriteLine("알파벳이 아닙니다.");
}

// 알파벳 판별 프로그램 - 삼항 연산자
Console.Write("문자를 입력하세요: ");
char c = Console.ReadLine()[0];
string alp = (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z') ? "알파벳입니다." : "알파벳이 아닙니다.";
Console.WriteLine(alp);

 

 

반복문

일련의 코드를 몇 번 반복하거나 조건에 해당할 때까지 반복을 도는 과정

 

반복문 기초

// for 문 기초
for (int i = 0; i < 10; i++)
{
    Console.WriteLine(i);
}

int j = 0;
for (j = 0; j < 10; j++)
{
    Console.WriteLine(j);
}

 

// while문 기초
int k = 0;
while (k < 10)
{
    Console.WriteLine(k);
    k++;
}

int count = 0;
while (count < 10)
{
    Console.WriteLine("적을 처치했습니다! 남은 적 수: " + (10 - count - 1));
    count++;
}

Console.WriteLine("축하합니다! 게임에서 승리하셨습니다!");

for문은 명확한 회차나 데이터가 있을 때 사용하기 좋고 while문은 조건에 부합하는 반복을 돌릴 때 사용하기 좋다.

 

// for 문 vs while 문
int sum1 = 0;

for (int i = 1; i <= 5; i++)
{
    sum1 += i;
}

Console.WriteLine("1부터 5까지의 합은 " + sum1 + "입니다.");

int sum2 = 0;
int k = 1;

while (k <= 5)
{
    sum2 += k;
    k++;
}

Console.WriteLine("1부터 5까지의 합은 " + sum2 + "입니다.");
  • for 문은 반복 횟수를 직관적으로 알 수 있고, 반복 조건을 한 눈에 확인할 수 있어 가독성이 좋다.
  • while 문은 반복 조건에 따라 조건문의 실행 횟수가 유동적이며, 이에 따라 코드가 더 간결할 수 있다.
// do while문
int sum = 0;
int num;

do
{
    Console.Write("숫자를 입력하세요 (0 입력 시 종료): ");
    num = int.Parse(Console.ReadLine());
    sum += num;
} while (num != 0);

Console.WriteLine("합계: " + sum);

// for each문
string[] inventory = { "검", "방패", "활", "화살", "물약" };

foreach (string item in inventory)
{
    Console.WriteLine(item);
}

 

// 중첩 반복문 - 이차원 반복문
// 구구단 출력
for (int i = 2; i <= 9; i++)
{
    for (int j = 1; j <= 9; j++)
    {
        Console.WriteLine(i + " x " + j + " = " + (i * j));
    }
}

// 구구단 가로
for (int i = 2; i <= 9; i++)
{
    for (int j = 1; j <= 9; j++)
    {
        Console.Write(i + " x " + j + " = " + (i * j) + "\t");
    }
    Console.WriteLine();
}

// 구구단 세로
for (int i = 1; i <= 9; i++)
{
    for (int j = 2; j <= 9; j++)
    {
        Console.Write(j + " x " + i + " = " + (i * j) + "\t");
    }
    Console.WriteLine();
}

 

Break & Continue

// Break & Continue
for (int i = 1; i <= 10; i++)
{
    if (i % 3 == 0)
    {
        continue; // 3의 배수인 경우 다음 숫자로 넘어감
    }

    Console.WriteLine(i);
    if (i == 7)
    {
        break; // 7이 출력된 이후에는 반복문을 빠져나감
    }
}

// Break & Continue 예제
int sum = 0;

while (true)
{
    Console.Write("숫자를 입력하세요: ");
    int input = int.Parse(Console.ReadLine());

    if (input == 0)
    {
        Console.WriteLine("프로그램을 종료합니다.");
        break;
    }

    if (input < 0)
    {
        Console.WriteLine("음수는 무시합니다.");
        continue;
    }

    sum += input;
    Console.WriteLine("현재까지의 합: " + sum);
}

Console.WriteLine("합계: " + sum);

 

반복문 심화

// 가위바위보
string[] choices = { "가위", "바위", "보" };
string playerChoice = "";
string computerChoice = "";

while (true)
{
    computerChoice = choices[new Random().Next(0, 3)];
    Console.Write("가위, 바위, 보 중 하나를 선택하세요: ");
    playerChoice = Console.ReadLine();

    Console.WriteLine("컴퓨터: " + computerChoice);

    if (playerChoice == computerChoice)
    {
        Console.WriteLine("비겼습니다!");
    }
    else if ((playerChoice == "가위" && computerChoice == "보") ||
             (playerChoice == "바위" && computerChoice == "가위") ||
             (playerChoice == "보" && computerChoice == "바위"))
    {
        Console.WriteLine("플레이어 승리!");
    }
    else if ((playerChoice == "가위" && computerChoice == "바위") ||
             (playerChoice == "바위" && computerChoice == "보") ||
             (playerChoice == "보" && computerChoice == "가위"))
    {
        Console.WriteLine("컴퓨터 승리!");
    }
    else
    {
        Console.WriteLine("가위, 바위, 보 중 하나를 선택하세요! ");
    }
}

// 숫자 맞추기
int targetNumber = new Random().Next(1, 101); ;
int guess = 0;
int count = 0;

Console.WriteLine("1부터 100 사이의 숫자를 맞춰보세요.");

while (guess != targetNumber)
{
    Console.Write("추측한 숫자를 입력하세요: ");
    guess = int.Parse(Console.ReadLine());
    count++;

    if (guess < targetNumber)
    {
        Console.WriteLine("좀 더 큰 숫자를 입력하세요.");
    }
    else if (guess > targetNumber)
    {
        Console.WriteLine("좀 더 작은 숫자를 입력하세요.");
    }
    else
    {
        Console.WriteLine("축하합니다! 숫자를 맞추셨습니다.");
        Console.WriteLine("시도한 횟수: " + count);
    }
}
조건문(conditional)

if else 문

if False:
     print("True")
else:
    print("False") # False

if 4 > 3:
    print("a") # a
else :
    print("b")

 

input은 입력값을 string으로 처리하기 때문에 정수나 실수 타입의 값을 받을 때에는 형변환 해주어야 한다.

value = input("값을 입력해주세요: ")

if int(value) > 10:
    print("a")
else:
    print("b")

 

if else 문

day = input("요일을 입력해주세요(0~6): ")

if day == "0":
    print("휴무")
elif day == "6":
    print("단축영업")
elif day == "1":
    print("연장영업")
else:
    print("정상영업")

 

 

반복문(loops)

for 문

i = 0
sum = 0

for i in range(1, 101):
    sum = sum + i

print(sum)

 

while 문

progress = 0

while progress < 100:
    
    progress = progress + 1
    print(f"{progress}% completed")

 

 

조건문(Conditional)

if 문

int a = 1;
int b = 100;

if (a == b) {
    System.out.println("a == b");
} else if (a < b) {
    System.out.println("a < b");
} else if (a <= b) {
    System.out.println("a <= b");
} else {
    System.out.println("else");
} // a < b

if가 참일 때, 코드를 실행한다. if가 거짓이라면 else를 실행한다.

조건을 여러 개 하고 싶다면 else if를 사용한다. 다중 조건문일 경우, 조건을 만족하는 다른 조건문이 있어도 최초의 분기만 실행한다.

 

switch 문

int a = 10;

switch (a + 1) {

    case 9:
        System.out.println("a + 1 == 9");
    case 10:
        System.out.println("a + 1 == 10");
    case 11:
        System.out.println("a + 1 == 11");;
}

switch의 값이 일치하는 case인 "a + 1 == 11"가 출력된다. 그렇다면 거꾸로 나열하면 어떻게 될까?

int a = 10;

switch (a + 1) {

    case 11:
        System.out.println("a + 1 == 11");
    case 10:
        System.out.println("a + 1 == 10");
    case 9:
        System.out.println("a + 1 == 9");;
}

황당하게도 "a + 1 == 11", "a + 1 == 10", "a + 1 == 9" 모두 출력된다. case 같은 경우에는 조건을 만족했다고 조건문을 끝내지 않는다. 조건을 끝내고 싶다면 아래처럼 break라는 키워드를 작성해야 빠져나갈 수 있다.

int a = 10;

switch (a + 1) {

    case 11:
        System.out.println("a + 1 == 11");
        break;
    case 10:
        System.out.println("a + 1 == 10");
        break;
    case 9:
        System.out.println("a + 1 == 9");
         break;
    default:
        System.out.println("default");
}

default는 모든 case에 만족하지 않을 경우 실행되는 코드이다.

 

 

반복문(Loops)

어떠한 작업을 반복적으로 수행할 수 있도록 하는 형식

 

for 문

for (int i = 0; i < 10; i++) {
    System.out.println(i);
}

for 문을 만들려면 괄호( ) 안에 먼저 int 형태의 초기화된 변수를 만들어준다. 그리고 변수의 범위를 정해준다. 조건식이 없으면 반복문이 계속 수행되어 무한루프에 빠지게 된다. i가 1씩 늘어나도록 ++ 증감식을 붙여준다. 이렇게하면 i가 10보다 작을 때까지 1씩 커지며 반복한다.

즉, 정리하면 for 문에는 초기화된 변수, 조건식, 증감식이 있어야한다.

 

while 문, do-while 문

int b = 10;

while (b > 0) {
System.out.println(b);
b--;
}

for 문은 초기화된 변수를 내부에서 만들지만 while 문은 보통 외부에서 만든다.

int b = 0;

do {
	System.out.println(b);
    b--;
} while (b > 0);

do-while 문은 일단 do로 조건없이 실행을 시킨 뒤, 중괄호{} 뒤에 while을 붙여 실행한다. do-while 문은 while 문과 다르게 먼저 실행 후, 조건문을 반복한다. 즉, while 문에 있는 조건과 무관하게 최초 한 번은 무조건 실행하는 반복문이다.

 

 

'Back-End > Java' 카테고리의 다른 글

함수  (0) 2023.05.15
자료구조 - 배열, 리스트, 맵  (0) 2023.05.12
연산자  (0) 2023.05.10
콘솔 입출력  (0) 2023.05.09
String 문자열  (2) 2023.05.09

+ Recent posts