手头的任务是读取一个具有未指定尺寸的文件...我完成此任务的唯一规定是我只允许使用数组 - 没有arraylists,列表,地图,树或任何东西其他的...只是数组。
是的,我潜入了一个示例txt文件,它显示的值如下:
0 2 3.0
1 0 2.0
2 1 7.0
2 3 1.0
3 0 6.0
但这并不是说将来用我的代码测试的所有可能文件都是相同的尺寸。
代码:
public void loadDistances(String fname) throws Exception {
String file = fname;
File f = new File(file);
Scanner in = null;
try {
in = new Scanner(f);
}
catch (FileNotFoundException ex) {
System.out.println("Can't find file " + file);
System.exit(1);
}
int rows = 0;
int cols = 0;
while(in.hasNextLine()) {
rows++;
while(in.hasNextDouble()){
cols++;
// statement here which will close once reads a "end of line" character?
// or something of the sorts
}
}
}
答案 0 :(得分:0)
在定义数组之前尝试找到维度... 行数可以通过以下剪切计算:
public int countDimensions(String mytxtFile) throws IOException {
InputStream contentOfFile = new BufferedInputStream(new FileInputStream(mytxtFile));
try {
byte[] a = new byte[1024];
int counter = 0;
int readMyChars = 0;
boolean emptyfile = true;
while ((readMyChars = contentOfFile.read(a)) != -1) {
emptyfile = false;
for (int i = 0; i < readMyChars; ++i) {
if (a[i] == '\n') { ++counter;}}
}
return (counter == 0 && !emptyfile) ? 1 : counter;
} finally {contentOfFile.close();}
}
- 现在你的阵列有第一个维度......
行中元素的数量可以通过计算行中的“分隔符”(如空格或特殊字母)来定义... 我不知道你想如何将数据放入数组,或者你想用数据做什么...但如果我理解正确的话,这可能会有用......
但是注意:整个解决方案并不是很美观。效率高,不推荐。