2016-04-23 3 views
2

J'ai mis en œuvre le code suivant pour imprimer une phrase en caractères minuscules:Comment analyser correctement les entrées de l'utilisateur à l'aide de java.util.Scanner?

import java.util.Scanner; 

public class LowerCase{ 
    public static void main (String[] args) { 
     String input, output = "", inter; 
     Scanner scan, lineScan; 
     scan = new Scanner(System.in); // Scan from the keyboard 
     System.out.println("Enter a line of text: "); 
     input = scan.nextLine(); // Scan the line of text 

     lineScan = new Scanner(input); 
     while (lineScan.hasNext()) { 
      inter = scan.next(); 
      output += inter.toLowerCase() + " "; 
     } 
     System.out.println(output); 
    } 
} 

Je ne sais pas ce qui ne va pas avec ma mise en œuvre! Il compile normalement mais quand je cours le code et tape la phrase d'entrée, il gèle.

Répondre

2

Votre boucle attend des lignes avec un scanner, mais en lisant les lignes d'un autre Scanner (donc une boucle infinie). Cette

while (lineScan.hasNext()) { 
    inter= scan.next(); 

devrait être quelque chose comme

while (lineScan.hasNext()) { 
    inter= lineScan.next(); 
+0

Ohh merci! – Jane

1

Vous n'avez pas besoin deux objets du scanner pour obtenir la sortie de cette œuvre pour vous

scan= new Scanner(System.in); //scan from the keyboard 
System.out.println("Enter a line of text: "); 
input=scan.nextLine(); //scan the line of text 


System.out.println(input.toLowerCase()); 
scan.close(); 
1

Je recommande une autre méthode:

import java.util.*; 
public class something 
    { 
     static Scanner reader=new Scanner(System.in); 
     public static void main(String[] args) 
     { 
      System.out.println("type something (string)"); 
      String text = reader.next(); // whatever the user typed is stored as a string here 
      System.out.println(text); 

      System.out.println("type something (int)"); 
      int num = reader.nextInt(); // whatever the user typed is stored as an int here 
      System.out.println(num); 

      System.out.println("type something (double)"); 
      double doub = reader.nextDouble(); // whatever the user typed is stored as double here 
      System.out.println(doub); 
     } 
    } 

Ceci est un exemple de code pour la façon dont je reçois l'entrée de l'utilisateur.