나는 프로그래밍에 익숙하지 않고 간단한 바위 종이 가위 게임을 만들려고 노력해 왔습니다. 기본적으로 while 루프를 사용하여 사용자에게 재생할지 (계속할지) 묻습니다. 일단 그들이 더 이상 원하지 않으면, 프로그램은 총 게임 수, 승리 수, 손실 수 및 승률을 프린트해야합니다. 나는 전체 프로그램이 작동한다는 것을 제외하고 항상 그렇지 않은 경우에도 승률이 0.0 %라고 말합니다. 제로 오류로 인한 분열을 피하기 위해 이미 if 문을 사용했습니다. 런타임이나 컴파일러 오류가 발생하지 않아 뭔가를 놓치거나 논리 오류가 있습니다. 찾을 수 없습니다. 스캐너 사용을 계속하고 싶습니다.가위 바위 가위 게임
import java.util.Scanner;
public class RockPaperScissors {
/*
* Program allows user to play Rock, Paper and Scissors as many times as desired by entering Y until they enter N.
* Program will print amount of games played, amount lost, amount won and percentage won.
* User must enter "Y", "N", "Rock", "Paper" or "Scissors" with correct capitalization and spelling.
*/
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int playerWins = 0;
int compWins = 0;
int gamesPlayed = 0;
while (true) {
System.out.println("Do you want to play Rock Paper Scissors (Y/N): ");
String play = input.nextLine();
// user terminates game and program prints number of wins, losses and percentage of wins.
if (play.equals("N")) {
System.out.println("You played a total of " + gamesPlayed + " matches against the computer");
System.out.println("The computer won " + compWins + " matches");
System.out.println("You won " + playerWins + " matches");
// 0% wins when no games are played.
if (gamesPlayed == 0) {
System.out.println("You won 0% of the time!");
break;
} else if (gamesPlayed > 0) {
double totalWins = (int)(playerWins/gamesPlayed) * 100;
System.out.println("You won " + totalWins + "% of the time!");
break;
}
} else if ((!play.equals("N")) && (!play.equals("Y"))) {
System.out.println("Invalid entry");
} else {
System.out.println("Welcome to Rock, Paper and Scissors!");
System.out.print("Select \"Paper\", \"Rock\" or \"Scissors\": ");
String decision = input.nextLine();
System.out.println("Your selection: " + decision);
// random number generator producing integer values between 1 to 3 for computer's choices.
// 1 is for Rock, 2 is for Paper and 3 is for Scissors.
int num = (int)(Math.random() * (3-0) + 1);
switch (num) {
// Computer picks Rock
case 1:
if (decision.equals("Rock")) {
System.out.println("Tie, you and the computer selected rock");
gamesPlayed++;
} else if (decision.equals("Paper")) {
System.out.println("You win, paper beats rock!");
gamesPlayed++;
playerWins++;
} else if (decision.equals("Scissors")) {
System.out.println("Computer wins, rock beats scissors!");
gamesPlayed++;
compWins++;
} else {
System.out.println(decision + " is not a valid input");
}
break;
case 2:
// computer picks Paper
if (decision.equals("Rock")) {
System.out.println("Computer wins, rock beats paper!");
gamesPlayed++;
compWins++;
} else if (decision.equals("Paper")) {
System.out.println("Tie, you and the computer selected paper");
gamesPlayed++;
} else if (decision.equals("Scissors")) {
System.out.println("You win, scissors beats paper");
gamesPlayed++;
playerWins++;
} else {
System.out.println(decision + " is not a valid input");
}
break;
case 3:
// computer picks Scissors
if (decision.equals("Rock")) {
System.out.println("You win, rock beats scissors");
gamesPlayed++;
playerWins++;
} else if (decision.equals("Paper")) {
System.out.println("Computer wins, scissors beats paper");
gamesPlayed++;
compWins++;
} else if (decision.equals("Scissors")) {
System.out.println("Tie, you and the computer selected scissors");
gamesPlayed++;
} else {
System.out.println(decision + " is not a valid input");
}
break;
}
}
}
}
}
오류가 여기에 있습니다 :'(INT) (playerWins/gamesPlayed) * 100;'. 힌트 : 정수 나누기. – nhahtdh
또한 승 매트릭스를 사용하는 R-P-S의 enum 솔루션의 예를 들어 보겠습니다. [여기] (http://stackoverflow.com/a/8264256/522444) –