Мне нужно набрать номер 2 раза после того, как мой сканер сканирует вход - PullRequest
1 голос
/ 12 февраля 2020

Не могли бы вы помочь мне понять, почему мне нужно набрать 2 раза, чтобы позволить сканеру сканировать мои входные данные. В основном, я проверяю приведенный ниже фрагмент кода, чтобы проверить, является ли число типом int и больше 0, чтобы спросить количество игроков, играющих в игру (игра с угадайкой)

Код проверки работает отлично, но .. Мне нужно набрать di git 2 раза ...

package pakiet;

import java.util.Random;
import java.util.Scanner;

public class GraModyfikacjaLiczbyGraczy {

    public static void main(String[] args) {

        Random rand = new Random();
        int los = rand.nextInt(11);
        int liczbaGraczy;  // number of players

        Scanner scan7 = new Scanner(System.in); // zamknac
        System.out.println("Type number of players");

        while (!scan7.hasNextInt() || scan7.nextInt() < 0) {
            System.out.println("Type number of players");
            scan7 = new Scanner(System.in);

        }
        liczbaGraczy = scan7.nextInt();

1 Ответ

3 голосов
/ 12 февраля 2020

Вы инициализируете Scanner 2 раза, поэтому -

В то время как l oop -

while (!scan7.hasNextInt() || scan7.nextInt() < 0) {
    System.out.println("Type number of players");
    //Issue here
    scan7 = new Scanner(System.in);
}

Вы можете просто использовать scan7.next() для следующего ввода.

Вы можете использовать do-While l oop для достижения этой цели -

public static void main(String[] args) {

        Random rand = new Random();
        int los = rand.nextInt(11);
        int liczbaGraczy;  // number of players

        Scanner scan7 = new Scanner(System.in); // zamknac
        System.out.println("Type number of players");

        do {
            while (!scan7.hasNextInt()){
                System.out.println(" Type number of players :");
                scan7.next();
            }
            liczbaGraczy = scan7.nextInt();
        }while (liczbaGraczy < 0);


        System.out.println("Number of players :"+liczbaGraczy);
}

Надеюсь, это поможет.

...