[JAVA] NextInt () → nextLine () pièges

Je voudrais passer deux paramètres, un nombre et une chaîne, comme entrée standard.

La méthode à utiliser est nextLine (): Une méthode qui peut obtenir l'entrée pour une ligne jusqu'au saut de ligne nextInt (): Une méthode qui peut obtenir un nombre de type int Il existe deux types, L'ordre compte.

Si nextLine () vient en premier, il acceptera l'entrée deux fois.


import java.util.*;

public class Main {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        String numStr = sc.nextLine();
        int num = sc.nextInt();

        sc.close();

        System.out.println(num);
        System.out.println(numStr);
    }
}

Si nextLine () est postérieur, l'entrée ne sera acceptée qu'une seule fois. numStr contient des caractères vides.


import java.util.*;

public class Main {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int num = sc.nextInt();
        String numStr = sc.nextLine();

        sc.close();

        System.out.println(num);
        System.out.println(numStr);
    }
}

C'est parce que le caractère de saut de ligne reste lors de la lecture d'une valeur numérique avec nextInt. int+enter(\n) Le caractère de saut de ligne restant a été lu par nextLine.

En tant que solution autre que de modifier l'ordre, int num = sc.nextInt(); sc.nextLine (); ← Chargez un saut de ligne ici. (Pas besoin de stocker dans les variables) String numStr = sc.nextLine();

il y a.

Recommended Posts

NextInt () → nextLine () pièges
[Spring] Pièges de BeanUtils.copyProperties
Pièges subtils de Lombok
Les pièges d'Active Hash
Les pièges de JAX-RS WebTarget.queryParam ()