#java #loops #if-statement #java.util.scanner #repeat
#java #циклы #if-statement #java.util.scanner #повторите
Вопрос:
Извините, я очень новичок в программировании, и я пытаюсь создать программу «камень, ножницы, бумага». Кажется, он работает нормально, но как только я ввожу ввод (камень, ножницы, бумага), он выдает мне мой результат, а затем завершается в консоли. Как я могу получить его, чтобы я мог сыграть больше раундов, и это сохранит мой счет без необходимости снова запускать программу. Я пытался использовать циклы for и while, но все, что он делает, это печатает результат игры столько раз, сколько циклов, а затем завершается. Еще раз извините, если об этом спрашивали или это очень очевидно, я просто искал везде и понятия не имею. ОСНОВНОЙ КОД
public class RockPaperScissorsMain {
public static void main(String[] args) {
System.out.println("Hello and welcome to Rock, Paper, Scissors");
System.out.println("Please select either Rock, Paper or Scissors...");
System.out.println("You can type "Quit" at any time to exit the game =)");
ActionClass myMethod= new ActionClass();
myMethod.method();
}
}
код
package rockPaperScissors;
import java.util.Scanner;
import java.util.Random;
public class ActionClass {
int winCounter=0;
int loseCounter=0; //COUNTER VARIABLES
int tieCounter=0;
String[] selection= {"Rock", "Paper", "Scissors"};
Random rand =new Random(); // VARIABLES
Scanner scanny = new Scanner(System.in);
char inputChar= scanny.nextLine().charAt(0);
String opponentSelection= selection[rand.nextInt(3)];
char playerSelection= Character.toLowerCase(inputChar);
public void method() {
if(playerSelection=='q') {
System.out.println("===============================================================================");
System.out.println("THANK YOU FOR PLAYING TAKE CARE!!!");
System.out.println("==============================================================================");
System.exit(0); }
else if (playerSelection=='r') {
System.out.println("you said " selection[0] "ttttttttttt Your opponent chooses... " opponentSelection);
System.out.println("======================================================================================================================================================");
}
else if(playerSelection== 'p') System.out.println("you said " selection[1] "ttttttttttt Your opponent chooses... " opponentSelection);
else if( playerSelection=='s') System.out.println("you said " selection[2] "ttttttttttt Your opponent chooses... " opponentSelection);
else System.out.println("nSorry please select a valid option of ROCK, PAPER or SCISSORS");
if (opponentSelection.equals(selection[0])) { System.out.println("you TIED"); tieCounter ;}
if (opponentSelection.equals(selection[1])) {System.out.println("you LOSE"); loseCounter ;}
if (opponentSelection.equals(selection[2])) { System.out.println("you WIN"); winCounter ;}
if ((inputChar=='r')||inputChar=='p'||inputChar=='s') {System.out.println("Good Game!!!");
System.out.println("nntttttPlay again!! please select either Rock, Paper or Scissors...");
System.out.println("ntttttYou've WON: " winCounter " times!!!" "You've TIED " tieCounter " times!!! You've LOST: " loseCounter " times!!!" );
}
}}
Ответ №1:
В вашем классе ActionClass было множество ошибок. Я исправил это здесь:
import java.util.Scanner;
import java.util.Random;
public class ActionClass {
int winCounter = 0;
int loseCounter = 0; //COUNTER VARIABLES
int tieCounter = 0;
public void method() {
String[] selection = {"Rock", "Paper", "Scissors"};
Random rand = new Random(); // VARIABLES
Scanner scanny = new Scanner(System.in);
char inputChar = scanny.nextLine().charAt(0);
char playerSelection = Character.toLowerCase(inputChar);
while (playerSelection != 'q') {
String opponentSelection = selection[rand.nextInt(3)];
if (playerSelection == 'q') {
System.out.println("===============================================================================");
System.out.println("THANK YOU FOR PLAYING TAKE CARE!!!");
System.out.println("==============================================================================");
System.exit(0);
} else if (playerSelection == 'r') {
System.out.println("you said " selection[0] "ttttttttttt Your opponent chooses... " opponentSelection);
System.out.println("======================================================================================================================================================");
} else if (playerSelection == 'p')
System.out.println("you said " selection[1] "ttttttttttt Your opponent chooses... " opponentSelection);
else if (playerSelection == 's')
System.out.println("you said " selection[2] "ttttttttttt Your opponent chooses... " opponentSelection);
else System.out.println("nSorry please select a valid option of ROCK, PAPER or SCISSORS");
if (opponentSelection.equals(selection[0])) {
System.out.println("you TIED");
tieCounter ;
}
if (opponentSelection.equals(selection[1])) {
System.out.println("you LOSE");
loseCounter ;
}
if (opponentSelection.equals(selection[2])) {
System.out.println("you WIN");
winCounter ;
}
if ((inputChar == 'r') || inputChar == 'p' || inputChar == 's') {
System.out.println("Good Game!!!");
System.out.println("nntttttPlay again!! please select either Rock, Paper or Scissors...");
System.out.println("ntttttYou've WON: " winCounter " times!!!" "You've TIED " tieCounter " times!!! You've LOST: " loseCounter " times!!!");
}
playerSelection = scanny.nextLine().charAt(0);
}
}
}
По сути, вам нужно поместить логику в цикл, что и делает эта строка:
while (playerSelection != 'q')
После того, как программа получит ввод и выполнит проверку R, P, S, снова вызовите scanner для следующего намерения пользователя в последней строке перед окончанием цикла while .