Как правильно сканировать пользовательский ввод, используя 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);
}
}
Я не знаю, что не так с моей реализацией! Он компилируется нормально, но когда я запускаю код и набираю входную фразу, он зависает.
3 ответа
Решение
Ваш цикл ожидает строки с одним сканером, но читает строки с другого Scanner
(таким образом, бесконечный цикл). это
while (lineScan.hasNext()) {
inter= scan.next();
должно быть что-то вроде
while (lineScan.hasNext()) {
inter= lineScan.next();
Я рекомендую другой метод:
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);
}
}
это пример кода для получения пользовательского ввода.
Вам не нужны два объекта сканера для достижения результата, это будет работать для вас
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();