我目前正在尝试使用扫描仪为推箱子游戏创建求解器,我现在遇到的问题是我的扫描仪没有按预期工作,我通常有一个文本文件,看起来像这样:
## ###### #
##### #####
当我尝试使用我的代码时,我想扫描每个字符,包括空格,保存它们,创建一个二维数组,把它们放在那里,这是我的第一步。问题是我的扫描仪没有像我希望的那样工作,我使用以下行:
sc.useDelimiter("s*");
这是我对空格计数的尝试,似乎确实如此,问题只是它每次进入空格时都会切换行。我的代码现在看起来像:
package soko;
import java.util.*;
import java.io.*;
public class Dowork {
File file;
Scanner sc;
char a;
static int lines;
Scanner lineScanner;
static int maxChar;
ArrayList array;
char[][] array2;
Scanner bc;
int n;
int m;
static int lines2;
public Dowork() throws Exception{
//lines += 1;
file = new File("C:/Users/joaki/Desktop/sokoban/readin.txt");
sc = new Scanner(file);
bc = new Scanner(file);
sc.reset();
bc.reset();
sc.useDelimiter("s*");
ArrayList<Character> array = new ArrayList<Character>();
while(sc.hasNext()) {
String line = sc.next();
if(maxChar <= line.length()) {
maxChar = line.length();
}
for (char ch:line.toCharArray()) {
array.add(ch);
}
if(sc.hasNextLine()) {
lines++;
}
}
sc.close();
while(bc.hasNextLine()) {
lines2++;
}
bc.close();
array2 = new char[lines][maxChar];
Iterator<Character> itemIterator = array.iterator();
while(itemIterator.hasNext()) {
itemIterator.next();
for (int q = 0; q < lines; q++) {
for(int r = 0; r < maxChar; r++) {
Character j = itemIterator.next();
array2[q][r] = j;
}
}
}
举个例子,当我使用具有以下内容的 txt 文件时:
########
# # .#
# $$.#
#### #
#@ ##
####
它数到 56 行,显然不应该是 56。我哪里做错了?
慕的地6264312
相关分类