Вопрос

извини за мой английский :)
Я новичок в программировании на Java, и у меня проблема со сканером.Мне нужно прочитать Int, показать некоторые данные, а затем прочитать строку, поэтому я использую sc.nextInt() sc.nextInt(); покажи мои вещи showMenu() Шоумену(); а затем попробуйте прочитать строку palabra=sc.nextLine();

Кто-то сказал мне, что мне нужно использовать sc.nextLine();после sc.nextInt();но я не понимаю, почему вы должны это делать : (

Вот мой код:

public static void main(String[] args) {
    // TODO code application logic here
    Scanner sc = new Scanner(System.in);
    int respuesta = 1;

    showMenu();
    respuesta = sc.nextInt();
    sc.nextLine(); //Why is this line necessary for second scan to work?

    switch (respuesta){
        case 1:
            System.out.println("=== Palindromo ===");
            String palabra = sc.nextLine();
            if (esPalindromo(palabra) == true)
                System.out.println("Es Palindromo");
            else
                System.out.println("No es Palindromo");
        break;
    }


}

Спасибо большое за ваше время и помощь: D

Это было полезно?

Решение

nextInt() считывает только до тех пор, пока не найдет значение int, а затем останавливается.

Вы должны сделать nextLine() потому что входной поток все еще содержит символ новой строки и, возможно, другие данные, отличные от int, в строке.Зовущий nextLine() считывает все оставшиеся данные, включая ввод, который пользователь нажал между вводом int и вводом строки.

Другие советы

Когда вы вводите значение (будь то String, int, double, и т.д.) и нажмите "Ввод", символ новой строки (он же '\n') будет добавлен в конец вашего ввода.Итак, если вы вводите int, sc.nextInt() будет считывать только введенное целое число и оставлять '\n' сзади, в буфере.Итак, способ исправить это - добавить sc.nextLine() это позволит прочитать остатки и выбросить их.Вот почему вам нужно иметь эту единственную строку кода в вашей программе.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top