2016-04-03 1 views
0

Quand je lance le code de ce programme je reçois:Fin JAVA entrée de plusieurs lignes de fichier

import java.util.Scanner; 

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

     Scanner kbd = new Scanner(System.in); 

     while (kbd.hasNextLine()) { 
     String str = kbd.nextLine(); 

     System.out.println(str.toUpperCase()); 

     } 
    } 
} 

la sortie pour chaque entrée, par exemple

input: abc 
output:ABC 
input: xyz 
output:XYZ 

Comment puis-je mettre en place le programme permettre l'entrée de plusieurs lignes avant de déclarer la fin du fichier? J'aime:

input: abc 
     xyz 
     aaa 
     ...etc 

output: ABC 
     XYZ 
     AAA 
     ...etc 

J'ai l'impression que je vais être embarrassée quand je découvre!

J'apprécie toute aide, merci.

+0

vous ne prenez pas de fichier d'entrée. Alors comment pouvez-vous vérifier si vous avez atteint EOF ou non? – Rehman

+0

Essayez ctrl-z comme dernière entrée – Turo

Répondre

0

Vous ne voulez que la sortie à la fin, donc je suggère de stocker l'entrée quelque part, par exemple. une liste, et seulement les imprimer lorsque la fin de l'entrée est atteinte.

Scanner kbd = new Scanner(System.in); 

List<String> input = new ArrayList<>(); 
while (kbd.hasNextLine()) 
    input.add(kbd.nextLine()); 

// after all the input, output the results. 
for (String str : input) 
    System.out.println(str.toUpperCase()); 
+1

Merci !!!!!! –

0
import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 

public class EndOfFile { 
public static void main(String[] args) throws IOException { 
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); 
    int n = 1; 
    String line; 
    while ((line=br.readLine())!=null) { 
     System.out.println(n + " " + line); 
     n++; 
    } 

    } 
}