6 votes

Liste de chaînes de caractères (plusieurs lignes) comme entrée de ligne de commande en Java

J'essaie de faire un devoir pour l'école et je ne sais pas comment traiter les données. J'ai fourni un lien ci-dessous pour le contexte du devoir :

https://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=0B1DkmkmuB-leNDVmMDU0MDgtYmQzNC00OTdkLTgxMDEtZTkxZWQyYjM4OTI1&hl=en

J'ai une idée générale de la façon de faire tout ce que le devoir demande, mais je ne suis pas sûr de la façon de traiter les données.

Un exemple d'entrée est :

a0
0
a00
ab000

Ce qui donne une sortie de :

Arbre 1 :
Invalide !
Arbre 2 :
hauteur : -1
longueur du chemin : 0
complet : oui
l'ordre postal :
Arbre 3 :
hauteur : 0
longueur du chemin : 0
complet : oui
post-ordre : un
Arbre 4 :
hauteur : 1
longueur du chemin : 1
complet : oui
Ordre de passage : ba

J'ai l'intention de le faire avec Java. Ma question est la suivante : comment saisir plusieurs lignes d'entrée comme dans l'exemple dans la ligne cmd.exe de Windows sans passer par un fichier d'entrée ? Parce qu'en appuyant sur la touche Entrée, le programme s'exécute avec une seule ligne de saisie au lieu de créer une nouvelle ligne. De plus, comme le devoir est noté automatiquement, l'entrée ne peut pas être interactive, alors comment puis-je savoir quand arrêter la lecture ?

Merci.

2voto

Jim Garrison Points 39523

De la mission :

Vous pouvez supposer que l'entrée viendra de l'entrée standard dans un flux qui représente une chaîne par ligne. Dans réalité, l'entrée proviendra d'un file qui est acheminé vers l'entrée standard. La sortie doit être envoyée vers standard out. Un exemple de file d'entrée et de sortie est disponibles.

Il suffit de lire System.in et d'écrire dans System.out. Comme l'entrée sera dirigée vers stdin, vous obtiendrez EOF à la fin du fichier d'entrée.

Lorsque vous interagissez via la fenêtre CMD, utilisez Ctrl-Z pour indiquer EOF (sous Windows) ou Ctrl-D sur un système Linux.

1voto

Si vous pouvez utiliser System.in, alors vous pourriez utiliser un InputStreamReader qui lit depuis un flux de System.in. Ensuite, utilisez un BufferedReader pour récupérer chaque ligne en utilisant la méthode readLine(). Par exemple, regardez ce code :

InputStreamReader input = new InputStreamReader(System.in) 
BufferedReader reader = new BufferedReader(input);
while (reader.readLine()) {
//Your code here. It will finish when the reader finds an EOL.
}

1voto

Alphaceph Points 115

Ce code fonctionnera sans aucun problème -

Scanner sc = new Scanner(System.in);   
String bitstring="";   
while(sc.hasNextLine()){  //until no other inputs to proceed            
     bitstring=sc.nextLine();//save it to the bitstring
//proceed with your other codes
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X