Sans System.in dans l'instanciation de la classe du scanner, je ne peux attribuer aucune valeur à partir de mon clavier. Que se passe-t-il exactement. Quelqu'un peut-il élaborer s'il vous plaît.
3 Réponses :
La valeur de System.in
, qui est une instance de InputStream
, est le " entrée standard ". Comme le dit la documentation:
Le flux d'entrée "standard". Ce flux est déjà ouvert et prêt à fournir des données d'entrée. En général, ce flux correspond à une entrée au clavier ou à une autre source d'entrée spécifiée par l'environnement hôte ou l'utilisateur.
Lorsque vous utilisez new Scanner (System.in)
, vous utilisez Scanner #
a > constructeur, dont la documentation dit:
Construit un nouveau
Scanner
qui produit des valeurs analysées à partir du flux d'entrée spécifié. Les octets du flux sont convertis en caractères à l'aide du jeu de caractères par défaut de la plate-forme sous-jacente.
Comme vous pouvez le voir, passer System.in
configure simplement le Scanner
pour lire à partir de l'entrée standard. Vous pouvez bien sûr utiliser un autre InputStream
qui lit ailleurs (par exemple, réseau, fichier, etc.). Si vous regardez les autres constructeurs de Scanner
, vous verrez que vous pouvez configurer de nombreux types de sources (par exemple, fichier, String
, etc.).
@CharanKumar Si cette réponse vous a aidé, vous devez l'accepter en cochant la case à côté.
Parce que vous devez spécifier où lire.
Les instructions suivantes sont parfaitement valides et lues à partir de diverses sources
/** * The "standard" input stream. This stream is already * open and ready to supply input data. Typically this stream * corresponds to keyboard input or another input source specified by * the host environment or user. */ public final static InputStream in = null;
Scanner sc = new Scanner(System.in);
String input = "1 fish 2 fish red fish blue fish"; Scanner s = new Scanner(input);
Donc, maintenant vous devez être clair que System.in
n'a pas besoin d'être toujours le paramètre lors de l'instanciation d'un Objet Scanner.
Pour continuer, expliquez pourquoi vous passez System.in
De docs
Public Scanner (source InputStream)
Construit un nouveau scanner qui produit des valeurs scannées à partir du flux d'entrée spécifié . Les octets du flux sont convertis en caractères utilisant le jeu de caractères par défaut de la plate-forme sous-jacente.
De java.lang.System
Scanner sc = new Scanner(new File("myNumbers"));
J'espère que cela va de soi!
Depuis Javadoc: Classe Scanner
| Constructor | Description | |---------------------------------------------------------|----------------------------------------------------------------------------------------| | Scannerâ(File source) | Constructs a new Scanner that produces values scanned from the specified file. | | Scannerâ(File source, String charsetName) | Constructs a new Scanner that produces values scanned from the specified file. | | Scannerâ(File source, Charset charset) | Constructs a new Scanner that produces values scanned from the specified file. | | Scannerâ(InputStream source) | Constructs a new Scanner that produces values scanned from the specified input stream. | | Scannerâ(InputStream source, String charsetName) | Constructs a new Scanner that produces values scanned from the specified input stream. | | Scannerâ(InputStream source, Charset charset) | Constructs a new Scanner that produces values scanned from the specified input stream. | | Scannerâ(Readable source) | Constructs a new Scanner that produces values scanned from the specified source. | | Scannerâ(String source) | Constructs a new Scanner that produces values scanned from the specified string. | | Scannerâ(ReadableByteChannel source) | Constructs a new Scanner that produces values scanned from the specified channel. | | Scannerâ(ReadableByteChannel source, String charsetName) | Constructs a new Scanner that produces values scanned from the specified channel. | | Scannerâ(Path source) | Constructs a new Scanner that produces values scanned from the specified file. | | Scannerâ(Path source, String charsetName) | Constructs a new Scanner that produces values scanned from the specified file. | | Scannerâ(Path source, Charset charset) | Constructs a new Scanner that produces values scanned from the specified file. |
Pour spécifier le type de Scanner que vous voulez, vous devez passer un paramètre. System.in indique à la classe Scanner que depuis la source InputStream
Étant donné que la classe scanner peut également lire à partir d'autres sources (comme des fichiers), vous devez savoir d'où exactement.