Как проверить значения в правильном диапазоне в циклах? - PullRequest
0 голосов
/ 04 октября 2018

У меня есть вопрос: как мне проверить, что значение введено в правильный диапазон, и попросить пользователя повторно ввести выбор?У меня уже есть код, указанный ниже, но он продолжает цикл вместо этого.Например, если игрок 1 вводит 6, он должен сказать «неправильно», повторно ввести правильный номер, а когда игрок 1 вводит число от 1 до 5, он переходит к игроку 2 и повторяется.Моя проблема в том, что цикл, который я использовал, не позволяет мне сделать это, вместо этого он зацикливает мой оператор печати 5 раз.

    import java.util.Scanner;
    import java.util.Random;
    public class Moropinzee
    {
       public class void main(String[] args)
       {
       String personPlay;
       int computerInt;
       String response; 


        int Monkey = 1;
        int Robot = 2;
        int Pirate = 3;
        int Ninja = 4;
        int Zombie = 5;
        Scanner scan = new Scanner(System.in);
        Random generator = new Random(); 

        System.out.print("Hey, let's play Moropinzee!\n" + 
                       "Please enter a move.\n");

        System.out.println("Player 1: Enter a number 1-5 for Monkey, Robot, Pirate, Ninja, or Zombie:");
        String player1 = scan.next().toUpperCase();


        System.out.println("Player 2: Enter a number 1-5 for Monkey, Robot, Pirate, Ninja, or Zombie");
        String player2 = scan.next().toUpperCase();

        System.out.println();



      for(int number = 0; number < 5; number++)
      {
      System.out.println("Invaild choice, Player 1. Enter a number 1-5:");
      }
    }
  }

enter image description here

enter image description here

Я хочу поблагодарить человека, который помогЯ уберу свой код.Я столкнулся с одной проблемой, если я введу номер 1, код напечатает недопустимую попытку еще раз ... Ну, вы можете увидеть на фотографиях ниже.Если я введу 1, он должен перейти к тому, чтобы попросить игрока 2 ввести число.

player 1 = nextInt();
if (player 1 =>6)
invalid try again

Ответы [ 3 ]

0 голосов
/ 04 октября 2018

Замените ваш код следующим:

import java.util.Scanner;
import java.util.Random;
class Moropinzee
{
   public static void main(String[] args)
   {
    String personPlay;
    int computerInt;
    String response; 


    int Monkey = 1;
    int Robot = 2;
    int Pirate = 3;
    int Ninja = 4;
    int Zombie = 5;
    int player1 = 0;
    int player2 = 0;
    Scanner scan = new Scanner(System.in);
    Random generator = new Random(); 

    System.out.print("Hey, let's play Moropinzee!\n" + "Please enter a move.\n");
    while(!(player1>0) || !(player1<6)) {
        System.out.println("Player 1: Enter a number 1-5 for Monkey, Robot, Pirate, Ninja, or Zombie:");
        player1 = scan.nextInt();
    }


    while(!(player2>0) || !(player2<6)){
        System.out.println("Player 2: Enter a number 1-5 for Monkey, Robot, Pirate, Ninja, or Zombie:");
        player2 = scan.nextInt();
    }

//...........true..............
    System.out.println();
   }
}

Обратите внимание, что я изменил переменные player1 и player2 на int.Таким образом, измените соответственно для дальнейшего кода.

0 голосов
/ 04 октября 2018

Попробуйте ... если вы не понимаете что-то, не стесняйтесь спрашивать.

public static void main(String[] args) {
    int[] playerChoice = new int[5]; // 5 players
    try (Scanner scan = new Scanner(System.in)) {  //in try resource so it is closed when no longer needed.
        for (int i = 0; i < playerChoice.length; i++) { //loop over the players
            System.out.println("Player " + (i + 1));
            int intInput;
            try {
                intInput = scan.nextInt();//get the input in int
            } catch (InputMismatchException ime) { // input was not int
                intInput = 0;//assign bad number
            }
            if (intInput < 1 || intInput > 5) { //test
                System.out.println("Invalid input.");
                i--;//retry
            }
        }
    }
}
0 голосов
/ 04 октября 2018

Я чувствую, что использование цикла while было бы более полезным.Кроме того, вы неправильно написали "Invalid" в последней строке печати.Попробуйте использовать цикл while, как этот:

// used to print invalid command if input other than those stated is 
    used.
while (!playerOne.equalsIgnoreCase("1") && 
    !playerOne.equalsIgnoreCase("2")) {
    System.out.println(invalidCommand);
    playerOne = scan.nextLine();
}

Попробуйте использовать это для каждого входного сигнала, который будет принят (я только сделал 1 и 2), и создайте переменную с именем invalidCommand, которая скажет пользователю попробоватьдействительный ввод!

...