Android/Kotlin
[Kotlin, Java] Kotlin과 Java의 문법적 차이와 각 언어의 특징을 가위, 바위, 보 게임을 예시로 알아보기
quessr
2024. 4. 2. 15:10
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!")
}
}
주요 차이점
- 입력 처리:
Kotlin의 readln()은 Java의 Scanner.nextLine()에 해당한다. Java에서는 Scanner 객체를 생성해야 한다. - 난수 생성:
Kotlin의 (1..3).random()은 Java에서 Random().nextInt(3) + 1로 대응된다.
Java에서는 Random 클래스를 사용하여 난수를 생성한다. - 조건문:
Kotlin의 when 구문은 Java에서 switch 또는 if-else 구문으로 대체된다.
Java에서는 switch 구문이 Kotlin의 when과 유사한 역할을 하지만, when보다는 다소 제한적이다. - 문자열 보간:
Kotlin에서는 문자열 내에 변수를 $ 기호와 함께 직접 삽입할 수 있다(println("$winner won!")).
Java에서는 문자열 연결을 통해 이를 구현한다(System.out.println(winner + " won!")).
반응형