У меня проблема с чтением ввода строки с помощью сканера в java - PullRequest
1 голос
/ 30 марта 2020

У меня проблема с чтением строки. Сканер прочитал Integer и double , и он показывает вывод без чтения строки .

Мне нужна ваша помощь.

public static void main(String[] args) {

    Scanner scan = new Scanner(System.in);
    int i = scan.nextInt();
    double d=scan.nextDouble();
    String s=scan.nextLine();

    scan.close();
    System.out.println("String: " + s);
    System.out.println("Double: " + d);
    System.out.println("Int: " + i);

}

}

Ответы [ 3 ]

0 голосов
/ 30 марта 2020

Суть в этом? Не звоните nextLine - это сбивает с толку, как это работает.

Если вы хотите читать строки, используйте next() вместо этого. Если вы хотите, чтобы значение целой строки вместо одного слова обновлялось, чтобы ваш сканер работал в «линейном режиме» вместо «космического режима»:

Scanner scan = new Scanner(System.in);
scan.useDelimiter("\r?\n");

 // and now use as normal:

 int i = scan.nextInt();
 double d=scan.nextDouble();
 String s=scan.next();

Это позволяет сканеру сканировать до символов новой строки , которые немного запутаны; в windows они \r\n, но в других ОС они просто \n, поэтому мы указываем: необязательно \r, затем обязательный \n.

0 голосов
/ 02 апреля 2020

благодарен за помощь. Эта ошибка возникает из-за того, что методы nextInt () и nextDouble () не читают символы новой строки вашего ввода.

Вы можете легко исправить это, анализируя int из nextLine (): Integer.parseInt(scan.nextLine()) или просто используя InputStreamReader класс как:

//sample code for understanding

InputStreamReader in=new InputStreamReader(System.in);
BufferedReader read=new BufferedReader(in);
//taking input
System.out.print("Enter a number: ");
int val=Integer.parseInt(read.readLine());
System.out.println("Value entered: "+val);
0 голосов
/ 30 марта 2020

Используйте nextLine() вместо nextInt() или nextDouble(). Проверьте Сканер пропускает nextLine () после использования next () или nextFoo ()? для получения дополнительной информации.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int i = Integer.parseInt(scan.nextLine());
        double d = Double.parseDouble(scan.nextLine());
        String s = scan.nextLine();

        System.out.println("String: " + s);
        System.out.println("Double: " + d);
        System.out.println("Int: " + i);
    }
}

Пример выполнения:

10
20
a
String: a
Double: 20.0
Int: 10
...