Сканер сканирует полные строки с помощью next () и не учитывает пробелы - PullRequest
2 голосов
/ 14 ноября 2010

Я пытаюсь поместить X и пробелы в 2D массив, и у меня продолжают возникать проблемы за проблемой.Все, чего я не хочу, - это текстовое представление в виде двумерного массива, но при отладке я замечаю, что в некоторых ячейках есть целые строки вместо строки из одного символа!

Если вы можете визуализировать двумерный массивкак лабиринт, где X - это стена, а пространство - открытые пространства для прохождения, так это поможет вам понять, что я делаю.Мне просто нужно, чтобы каждая ячейка имела правильное значение: X или "".

 while(scan.hasNextLine() && r < rows) {
            while(scan.hasNextLine() && c < columns) {
                maze[r][c]=scan.next();
                c++;
            }
            c = 0;
            r++;
        }

Ответы [ 2 ]

3 голосов
/ 14 ноября 2010

Если вы собираетесь использовать hasNextLine(), тогда вы захотите использовать nextLine() для его получения.Если вас не интересует следующая строка, и вы действительно хотите иметь дело со следующим токеном , тогда вам следует использовать hasNext() и next().

2 голосов
/ 14 ноября 2010

Вы можете попробовать немного другой подход:

 while(scan.hasNextLine() && r < rows) {
   String line = scan.nextLine();
   char[] characters = line.    toCharArray();
   for (int i=0; i< characters.length; i=i+1{
        maze[r][i] = characters[i];
   }
   r++;
 }

Редактировать: глядя на ваш код, я не знаю, вызовет ли это указанную вами проблему, но ваш второй цикл while имеет scan.hasNextLine() итак как вы на самом деле используете scan.next(), это должно быть scan.hasNext().Кроме того, поскольку вы потенциально завершаете цикл раньше, если в строке остаются какие-либо столбцы, возможно, он не переходит к следующей строке.

...