我有一个包含以下内容的文本文件:
griffin.keyes 108de81c31bf9c622f76876b74e9285f "alphabet soup" zookeeper
rosario.dawson 3e34baa4ee2ff767af8c120a496742b5 "animal doctor" admin
bernie.gorilla a584efafa8f9ea7fe5cf18442f32b07b "secret password" veterinarian
donald.monkey 17b1b7d8a706696ed220bc414f729ad3 "M0nk3y business" zookeeper
jerome.grizzlybear 3adea92111e6307f8f2aae4721e77900 "grizzly1234" veterinarian
bruce.grizzlybear 0d107d09f5bbe40cade3de5c71e9e9b7 "letmein" admin
我正在使用以下代码将其读入二维数组:
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Scanner;
public class Credentials {
private FileInputStream fileByteStream = null; // File input stream
private Scanner inFS = null; // Scanner object
final private String [][] credArray = new String[6][4];
public String[][] credArray() throws IOException {
int i = 0; // Index variable
int j = 0; // Index variable
// Import credentials data.
fileByteStream = new FileInputStream("credentials.txt");
inFS = new Scanner(fileByteStream);
// Use carriage return and tab as token separators
inFS.useDelimiter("[\\r\\t]");
// Create array of credentials.txt
for (i = 0; i < NUM_ROWS_CRED; ++i) {
for (j = 0; j < NUM_COLS_CRED; ++j) {
credArray[i][j] = inFS.next();
}
}
fileByteStream.close(); //Closes file.
return credArray;
}
}
第一行是没有问题的。第2-6行靠近,第一个字符串在其前面添加了\n
。例如:\nrosario.dawson
。
我怀疑分隔符有问题,但我不确定还有什么用。我尝试使用("[\\r\\n\\t]")
,但这只是在第一行之后偏移了每行""
的所有内容。我该如何纠正这个?
答案 0 :(得分:0)
我找到了自己问题的解决方案。
问题在于这部分代码:
// Create array of credentials.txt
for (i = 0; i < NUM_ROWS_CRED; ++i) {
for (j = 0; j < NUM_COLS_CRED; ++j) {
credArray[i][j] = inFS.next();
}
}
我需要更正我从扫描仪inFS
中读取信息到数组中credArray
的方式。我是通过将代码更改为:
// Create array of credentials.txt
for (i = 0; i < NUM_ROWS_CRED; ++i) {
for (j = 0; j < NUM_COLS_CRED; ++j) {
credArray[i][j] = inFS.next().replaceAll("\\n", "");
}
}
这会自动删除第2-6行的所有新行代码条目。