본문 바로가기
Android/Kotlin

[Kotlin, Java] Kotlin과 Java의 문법적 차이와 각 언어의 특징을 가위, 바위, 보 게임을 예시로 알아보기

by quessr 2024. 4. 2.

 

Java 코드

package eu.tutorials.rockpaperscissors;

import java.util.Scanner;
import java.util.Random;

public class Main {
    public static void main(String[] args) {
        String computerChoice = "";
        String playerChoice = "";
        System.out.println("Rock, Paper or Scissors? Enter your choice");
        
        Scanner scanner = new Scanner(System.in);
        playerChoice = scanner.nextLine();

        Random rand = new Random();
        int randomNumber = rand.nextInt(3) + 1;

        switch (randomNumber) {
            case 1:
                computerChoice = "Rock";
                break;
            case 2:
                computerChoice = "Scissors";
                break;
            case 3:
                computerChoice = "Paper";
                break;
        }

        System.out.println(computerChoice);

        String winner;
        if (playerChoice.equals(computerChoice)) {
            winner = "Tie";
        } else if (playerChoice.equals("Rock") && computerChoice.equals("Scissors")
                || playerChoice.equals("Paper") && computerChoice.equals("Rock")
                || playerChoice.equals("Scissors") && computerChoice.equals("Paper")) {
            winner = "Player";
        } else {
            winner = "Computer";
        }

        if (winner.equals("Tie")) {
            System.out.println("It's a tie");
        } else {
            System.out.println(winner + " won!");
        }

        scanner.close();
    }
}

 

Kotlin 코드

package eu.tutorials.rockpaperscissors

fun main(){

    var computerChoice = ""
    var playerChoice = ""
    println("Rock, Paper or Scissors? Enter your choice")
    playerChoice = readln()

    val randomNumber = (1..3).random()

    when(randomNumber) {
        1 -> computerChoice = "Rock"
        2 -> computerChoice = "Scissors"
        3 -> computerChoice = "Paper"
    }

    println(computerChoice)

    val winner = when {
        playerChoice == computerChoice -> "Tie"
        playerChoice == "Rock" && computerChoice == "Scissors" -> "Player"
        playerChoice == "Paper" && computerChoice == "Rock" -> "Player"
        playerChoice == "Scissors" && computerChoice == "Paper" -> "Player"
        else -> "Computer"
    }

    if(winner == "Tie") {
        println("It's a tie")
    } else {
        println("$winner won!")
    }
}

 

주요 차이점

  1. 입력 처리:
    Kotlin readln() Java Scanner.nextLine() 해당한다. Java에서는 Scanner 객체를 생성해야 한.
  2. 난수 생성:
    Kotlin (1..3).random() Java에서 Random().nextInt(3) + 1 대응된다.
    Java에서는 Random 클래스를 사용하여 난수를 생성한다.
  3. 조건문:
    Kotlin when 구문은 Java에서 switch 또는 if-else 구문으로 대체된다.
    Java에서는 switch 구문이 Kotlin when 유사한 역할을 하지만, when보다는 다소 제한적이다.
  4. 문자열 보간:
    Kotlin에서는 문자열 내에 변수를 $ 기호와 함께 직접 삽입할 있다(println("$winner won!")).
    Java에서는 문자열 연결을 통해 이를 구현한다(System.out.println(winner + " won!")).