对于家庭作业,我们必须读入包含地图的txt文件。使用地图,我们应该读取其内容并将它们放入二维数组中。
我已经设法将文件读入一维String ArrayList,但我遇到的问题是将其转换为二维char数组。
这是我到目前为止在构造函数中所拥有的:
try{
Scanner file=new Scanner (new File(filename));
while(file.hasNextLine()){
ArrayList<String> lines= new ArrayList<String>();
String line= file.nextLine();
lines.add(line);
map=new char[lines.size()][];
}
}
catch (IOException e){
System.out.println("IOException");
}
当我打印出lines.size()时,它打印出1,但是当我查看文件时它有10个。
提前致谢。
答案 0 :(得分:4)
您必须在循环之外创建列表。通过实际实现,您可以为每个新行创建一个新列表,因此它的大小始终为1。
// ...
Scanner file = new Scanner(new File(filename));
List<String> lines = new ArrayList<String>(); // <- declare lines as List
while(file.hasNextLine()) {
// ...
BTW - 我不会将char[][]
变量命名为map
。 Map是一种完全不同的数据结构。这是一个数组,如果你在循环内创建,那么你可能会遇到与列表一样的问题。但现在你应该知道一个快速修复;)
答案 1 :(得分:0)
更改代码如下:
public static void main(String[] args) {
char[][] map = null;
try {
Scanner file = new Scanner(new File("textfile.txt"));
ArrayList<String> lines = new ArrayList<String>();
while (file.hasNextLine()) {
String line = file.nextLine();
lines.add(line);
}
map = new char[lines.size()][];
} catch (IOException e) {
System.out.println("IOException");
}
System.out.println(map.length);
}