扫描仪正在使用next()扫描整行而不考虑空格

时间:2010-11-14 03:48:37

标签: java string java.util.scanner

我正在尝试将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 个答案:

答案 0 :(得分:3)

如果您要使用hasNextLine(),那么您需要使用nextLine()来检索它。如果您不关心下一行,并且真的想要处理下一个令牌,那么您应该使用hasNext()next()

答案 1 :(得分: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++;
 }

编辑:查看你的代码,我不知道它是否会导致你说的问题,但你的第二个while循环有 scan.hasNextLine()并且由于您实际上在那里使用scan.next(),因此它应该是scan.hasNext()。此外,如果行中还有任何列,您可能会提前结束循环,也许它不会进入下一行。