2016-04-23 2 views
2

Я реализовал следующий код, чтобы напечатать фразу строчных букв:Как правильно сканировать вход пользователя с помощью 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); 
    } 
} 

Я не знаю, что случилось с моей реализацией! Он компилируется нормально, но когда я запускаю код и набираю входную фразу, он зависает.

ответ

2

Ваша петля ждет линий с одним сканером, но считывает строки от другого Scanner (таким образом, бесконечный цикл). Это

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

должно быть что-то вроде

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

Ohh thank youu! – Jane

1

Вам не нужно два объектов сканера для достижения выходной это будет работать для вас

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

Я рекомендую другой метод:

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

это пример кода для ввода пользователем.

Смежные вопросы