Java -Как я могу ввести новый ввод, как только мой proram запустится с первым значением?

#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 .