您的文本文件在第一行后面包含一组信息。第一行包括高度,然后是宽度(用逗号分隔)。
SignalTimeOut.Add(new StopSignal(){time = DateTime.Now, symbol="AAPL", timeout=60});
我正在考虑使用类似的东西,
10, 10
##########
##########
##########
##########
##########
##########
##########
##########
##########
##########
但只是不明白如何从第一行收集信息。
答案 0 :(得分:0)
for (int row = 0; row < x; row++) {
String words = inputFile.nextLine();
if (row == 0) {
final int width = Integer.parseInt(words.split(",")[0].trim()),
height = Integer.parseInt(words.split(",")[1].trim());
// Do whatever with the width and height
} else {
for (int i=0; i < words.length(); i++) {
array[x][y] = words.charAt(i);
}
}
}
上面的代码应该满足您的需求。如果正在读取第一行,它将解析宽度和高度。
此外,您确实不需要for循环列,并且在数组中使用x
而不是row
的代码也没有用。
我建议array[row][i] = words.charAt(i);
。
答案 1 :(得分:0)
首先,我建议使用扫描仪。使用扫描仪,您可以使用next()两次来获取行号和列号。假设文本文件的格式始终相同,则可以使用该扫描器next()列次数并解析每个字符串(表示单行)以获取字符。
答案 2 :(得分:-1)
由于您似乎对Java很新,我建议您使用BufferedReader
,并使用split()
和parseInt()
解析第一行:
String filename = "path/to/myfile.txt";
try (BufferedReader in = new BufferedReader(new FileReader(filename))) {
String line = in.readLine();
String[] values = line.split(",");
int rows = Integer.parseInt(values[0].trim());
int cols = Integer.parseInt(values[1].trim());
char[][] matrix = new char[rows][cols];
for (int row = 0; row < rows; row++) {
String line = in.readLine();
for (int col = 0; col < cols; col++)
matrix[row][col] = line.charAt(col);
}
}
对于更高级的方法,应使用正则表达式解析第一行,并且代码应执行更多错误检查。然而,这超出了今天课程的范围。