2010-11-14 2 views
2

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

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

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

ответ

2

Вы можете попробовать несколько иной подход:

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++; 
} 

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

3

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

+0

nextLine возвращает строковое значение, а не логическое значение ... –

+0

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

+0

О, я сейчас понимаю. Однако он все еще не исправил ошибку. –

Смежные вопросы