Чтение строк Java (next) и nextLine () - PullRequest
1 голос
/ 16 января 2012

Проблема в том, что я не могу прочитать переменную, введенную с помощью next (), потому что, когда я пытаюсь разбить (.split "") каждый пробел, то массив просто получает первые два слова, которые я печатаю, поэтому мне пришлось использовать keyboard.nextLine ( ) и процесс разбиения работает так, как он должен работать, и я получаю все слова в массиве, но проблема в том, что если я использую nextLine (), то мне нужно создать еще один объект клавиатуры для чтения первой переменной (ответ), и это Единственный способ заставить его работать здесь - это код

    Scanner keyboard=new Scanner(System.in);
    Scanner keyboard2=new Scanner(System.in);//just to make answer word

    int answer=keyboard.nextInt();//if I don't use the keyboard2 here then the program will not work as it should work, but if I use next() instead of nextLine down there this will not be a problem but then the splitting part is a problem(this variable counts number of lines the program will have).

    int current=1;
    int left=0,right=0,forward=0,back=0;

    for(int count=0;count<answer;count++,current++)
    {
        String input=keyboard.nextLine();
        String array[]=input.split(" ");
        for (int counter=0;counter<array.length;counter++)
        {
            if (array[counter].equalsIgnoreCase("left"))
            {
                left++;
            }
            else if (array[counter].equalsIgnoreCase("right"))
            {     
                right++;
            }
            else if (array[counter].equalsIgnoreCase("forward"))
            {
                forward++;   
            }
            else if (array[counter].equalsIgnoreCase("back"))
            {     
                back++;
            }
        }

   }
}

Спасибо:)

1 Ответ

11 голосов
/ 16 января 2012

Поставьте keyboard.nextLine() после этой строки:

int answer=keyboard.nextInt();

Это распространенная проблема, которая обычно возникает при использовании метода nextLine() после nextInt() метода класса Scanner.

На самом деле происходит то, что, когда пользователь вводит целое число в int answer = keyboard.nextInt();, сканер берет только цифры и оставляет символ новой строки \n. Поэтому вам нужно сделать трюк, вызвав keyboard.nextLine();, просто чтобы сбросить этот символ новой строки, и тогда вы сможете без проблем вызвать String input = keyboard.nextLine();.

...