我正在创建一个函数来打印一个mase,它存储在一个2 Dimensional ArrayList<ArrayList<String>>
中。但是,函数输出了很大一部分空白。我试图先遍历每个ArrayList<String>
,然后遍历嵌套ArrayList<String>
中的每个String
元素,然后通过读取文件创建ArrayList<ArrayList<String>>
。
以下是文件:
XXXXXXXXSOOOOXXXXXX
XXXXXXXXXXXXOXXXXXX
XXXXXXXXXXXXOXXXXXX
XXXXXXXXXXXXOXXXXXX
XXXXXXXOOOOOXXXXXX
XXXXXXXOXXXXXXXXXXX
XXXXXXXEXXXXXXXXXXX
这里是我创建它的地方:
String fileName = "maze.txt";
String line = null;
ArrayList<ArrayList<String>> lines = new ArrayList<ArrayList<String>>();
// Setup FileReader, BufferedReader, and LineReader
FileReader fileReader = new FileReader(fileName);
BufferedReader bufferedReader = new BufferedReader(fileReader);
// Get all the lines inside the maze file
while ((line = bufferedReader.readLine()) != null)
{
ArrayList<String> lineList = new ArrayList<String>();
for (int i = 0; i < line.length(); i++)
{
lineList.add(line.substring(i, i));
}
lines.add(lineList);
}
这是我的功能:
public static void printMase(ArrayList<ArrayList<String>> lines)
{
for (ArrayList<String> row: lines)
{
for (String elem: row)
{
System.out.println(elem);
}
}
}
发布于 2015-05-31 01:11:12
您的代码中有一些小错误。进行以下更改。
// This is adding a blank space
lineList.add(line.substring(i, i));
至
// This will add a single character
lineList.add(line.substring(i, i+1));
并修改printMase(ArrayList<ArrayList<String>> lines)
public static void printMase(ArrayList<ArrayList<String>> lines)
{
for (ArrayList<String> row: lines)
{
for (String elem: row)
{
// Using print so each character is on the same line
System.out.print(elem);
}
// Now use println to end the line
System.out.println();
}
}
完整代码如下:
public static void main(String[] args) throws Exception {
String fileName = "maze.txt";
String line = null;
ArrayList<ArrayList<String>> lines = new ArrayList<>();
// Setup FileReader, BufferedReader, and LineReader
FileReader fileReader = new FileReader(fileName);
BufferedReader bufferedReader = new BufferedReader(fileReader);
// Get all the lines inside the maze file
while ((line = bufferedReader.readLine()) != null) {
ArrayList<String> lineList = new ArrayList<>();
for (int i = 0; i < line.length(); i++) {
// Adds a single character
lineList.add(line.substring(i, i+1));
}
lines.add(lineList);
}
printMase(lines);
}
public static void printMase(ArrayList<ArrayList<String>> lines)
{
for (ArrayList<String> row: lines)
{
for (String elem: row)
{
// Using print so each character is on the same line
System.out.print(elem);
}
// Now use println to end the line
System.out.println();
}
}
结果:
XXXXXXXXSOOOOXXXXXX
XXXXXXXXXXXXOXXXXXX
XXXXXXXXXXXXOXXXXXX
XXXXXXXXXXXXOXXXXXX
XXXXXXXOOOOOXXXXXXX
XXXXXXXOXXXXXXXXXXX
XXXXXXXEXXXXXXXXXXX
发布于 2015-05-30 20:57:10
喔,我意识到我在初始化时添加了空格。我更新了代码,使其添加了实际字符:
String fileName = "maze.txt";
String line = null;
ArrayList<ArrayList<String>> lines = new ArrayList<ArrayList<String>>();
// Setup FileReader, BufferedReader, and LineReader
FileReader fileReader = new FileReader(fileName);
BufferedReader bufferedReader = new BufferedReader(fileReader);
while ((line = bufferedReader.readLine()) != null)
{
ArrayList<String> lineList = new ArrayList<String>();
for (int i = 0; i < line.length(); i++)
{
lineList.add(Character.toString(line.charAt(i)));
}
lines.add(lineList);
}
https://stackoverflow.com/questions/30551231
复制相似问题