-1

我正在尝试逐个字符地将文件读入二维数组,并且我有一个代码可以做到这一点,但是在读取第一行字符后,它不会对数组中的下一个空格设置任何内容,然后设置字符那应该是在那个空间前面一个空间。我如何解决它?

   for(int x = 0; ((c = br.read()) != -1) && x < w.length*w.length; x++) {
     w.currentChar = (char) c;
     w.row = x/w.length;
     w.column = x%w.length;
     w.wumpusGrid[w.row][w.column] = w.currentChar;
     System.out.print(w.currentChar);
     System.out.print(w.row);
     System.out.print(w.column);
   }
4

2 回答 2

1

您的问题是正在读取行尾的 '\n' 并将其分配给您的数组,您需要跳过该字符并保留跳过的计数,以便您可以偏移跳过的字符:

int offset = 0;
for(int x = 0; ((c = br.read()) != -1) && x < w.length*w.length; x++) {
  if (c == '\n') {
    offset++;
    continue;
  }
  int pos = x - offset;
  w.currentChar = (char) c;
  w.row = pos/w.length;
  w.column = pos%w.length;
  w.wumpusGrid[w.row][w.column] = w.currentChar;
  System.out.print(w.currentChar);
  System.out.print(w.row);
  System.out.print(w.column);
}
于 2013-03-12T21:19:26.220 回答
0

您的问题在于行尾('\n'(linux/mac)或'\r\n'(win))并将它们视为您的字符。x尽管读取了 char,但您仍在增加。取出定义x++中的最后一部分for并将其移动到循环体的末尾。在循环的开头continueif c == '\n' || c == '\r'(我猜你对这两个字符都不感兴趣)

于 2013-03-12T21:39:43.120 回答