java - 在java中将文本文件复制到二维字符数组中
问题描述
我正在阅读一个包含 5x6 字符大 ascii 图像的文本文件。这是我到目前为止所做的:
...
Scanner fileReader = null;
try{
File file = new File(fileName);
fileReader = new Scanner(file);
int offset = 0;
char [][] pic = new char[5][6];
while (fileReader.hasNextLine()){
for (int u = 0; u < row; u++){
for (int i = 0; i < col; i++){
String line = fileReader.nextLine();
pic[u][i] = line.charAt(offset++);
}
}
return pic;
}
fileReader.close();
}
catch(Exception e){
System.out.println(e.getMessage());
}...
这给了我一个“找不到线路”的消息。我想知道我用来询问用户文件名的扫描仪是否是问题的一部分。看起来是这样的:
System.out.println("Hello! I load files.");
System.out.println("Please, enter file name:");
Scanner reader = new Scanner(System.in);
String fileName = reader.nextLine();
之后我试图关闭阅读器,但它没有改变任何东西。任何帮助深表感谢。
解决方案
几件事:
首先,您尝试为数组的每个索引读取一行(即row*col
时间)。
其次,您应该只逐行阅读。
你可以用这个替换你的整个while
循环:
for (int u = 0; u < row && fileReader.hasNextLine(); u++) {
String line = fileReader.nextLine();
for (int i = 0; i < col; i++) {
pic[u][i] = line.charAt(offset++);
}
offset = 0;
}
return pic;
此外,您可能希望offset
在每个处理过的“行”之后重置 的值。
推荐阅读
- python - 如何计算 Python 中其他页面上列出的所有工作?
- python-3.x - 有没有缩短这些 if/elif/else 语句的好方法?
- mysql - 旧 SQL 版本的覆盖脚本可用于 5.6
- javascript - 你会如何减少这个数组?(阅读说明以获取更多信息)
- python - python3和pip的问题
- python - 如何在 python 中从 HDF5 中提取数据?
- ide - 如何进入 POSXML 开发
- reactjs - 让 reduxFirestore 在 react app.TypeError: getFirestore is not a function / ts(2345) 中工作
- python - Discord.py 更改频道标题但保留 ID
- validation - 在 Google 表格中使用多选下拉菜单进行数据验证