[JAVA] Fallstricke von NextInt () → nextLine ()

Ich möchte zwei Parameter, eine Zahl und eine Zeichenfolge, als Standardeingabe übergeben.

Die zu verwendende Methode ist nextLine (): Eine Methode, mit der die Eingabe für eine Zeile bis zum Zeilenumbruch abgerufen werden kann nextInt (): Eine Methode, die eine int-Typennummer erhalten kann Es gibt zwei Arten, Die Reihenfolge ist wichtig.

Wenn nextLine () an erster Stelle steht, wird die Eingabe zweimal akzeptiert.


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);
    }
}

Wenn nextLine () später ist, wird die Eingabe nur einmal akzeptiert. numStr enthält leere Zeichen.


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);
    }
}

Dies liegt daran, dass das Zeilenvorschubzeichen beim Lesen eines numerischen Werts mit nextInt erhalten bleibt. int+enter(\n) Das verbleibende Zeilenvorschubzeichen wurde von nextLine gelesen.

Als eine andere Lösung als die Änderung der Reihenfolge, int num = sc.nextInt(); sc.nextLine (); ← Laden Sie hier einen Zeilenumbruch. (Keine Notwendigkeit, in Variablen zu speichern) String numStr = sc.nextLine();

es gibt.

Recommended Posts

Fallstricke von NextInt () → nextLine ()
[Frühling] Fallstricke von BeanUtils.copyProperties
Subtile Fallstricke von Lombok
Die Fallstricke von Active Hash
Die Fallstricke von JAX-RS WebTarget.queryParam ()