我正在嘗試用 Java 創建一個登錄系統,并且我已將管理員資訊以這種格式保存在一個文本檔案中:
Hannah,Joshua,Female,373ac,admin123
Leena,Kevin,Female,3283c,admin123
第四個索引 ( 373ac
) 是他們的用戶名,第五個 ( admin123
) 是密碼。每個管理員都會在檔案中獲得一個新用戶名和一個單獨的行。
每次管理員登錄時,他們都會輸入他們的姓名,程式應該搜索以他們的姓名開頭的行并比較用戶名和密碼的檔案,以便他們可以登錄。我認為最好的方法是二維陣列. 到目前為止,我有這段代碼,但它不是將其作為二維陣列讀取,而只是一個包含所有行的陣列。像這樣:
[Hannah,Joshua,Female,373ac,admin123,Leena,Kevin,Female,3283c,admin123]
你能幫幫我嗎?
public class ReadFile {
public static void main(String[] args) throws Exception {
BufferedReader bufReader = new BufferedReader(new FileReader("Admin.txt"));
ArrayList<String> listofLines = new ArrayList<>();
String line = bufReader.readLine();
while (null != (line = in.readLine())) {
listofLines.add(line);
}
bufReader.close();
int [][] map = new int[bufReader.size()][];
int q = 0;
for (int i = 0; i < map.length; q ) {
String[] rooms = bufReader.get(i).split(",");
map[i] = new int[rooms.length];
for (int w = 0; w < rooms.length; w ) {
map[q][w] = Integer.parseInt(rooms[w]);
}
System.out.println(Arrays.toString(map[q]));
}
}
}
uj5u.com熱心網友回復:
您可以使用Files.lines()將檔案讀取為Stream<String>
.
static String[][] readFileAs2DArray(String fileName) throws IOException {
try (Stream<String> stream = Files.lines(Path.of(fileName), Charset.defaultCharset())) {
return stream
.map(line -> line.split(","))
.toArray(String[][]::new);
}
}
public static void main(String[] args) throws IOException {
String[][] result = readFileAs2DArray("Admin.txt");
for (String[] line : result)
System.out.println(Arrays.toString(line));
}
輸出:
[Hannah, Joshua, Female, 373ac, admin123]
[Leena, Kevin, Female, 3283c, admin123]
uj5u.com熱心網友回復:
您正在填充listofLines
但從未使用它
而不是基于迭代bufReader
,為什么不利用listofLines
呢?
另外,你為什么同時使用i
和q
作為索引?一個似乎就足夠了
編輯:int[][]
陣列也應該是String[][]
String [][] map = new String[listofLines.size()][];
for (int i = 0;i<map.length;i ){
String[] rooms = listofLines.get(i).split(",");
map[i] = new int[rooms.length];
for(int w = 0; w<rooms.length;w ){
map[i][w] = rooms[w];
}
System.out.println(Arrays.toString(map[i]));
}
另外,如果你想讓你的代碼更簡潔
String [][] map = new String[listofLines.size()][];
for (int i = 0;i<map.length;i ){
map[i] = listofLines.get(i).split(",");
System.out.println(Arrays.toString(map[i]));
}
為了您bufReader
嘗試將代碼更改為此
String line = bufReader.readLine();
while (line != null) {
listofLines.add(line);
line = bufReader.readLine();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/523573.html
標籤:爪哇
上一篇:CORS策略已阻止從源“http://localhost:3000”訪問“http://localhost:8080/blog/updatePost/2”處的XMLHttpRequest: