[英]Missing line? Reading string from .txt file and putting into arrays (java)
抱歉,我還是Java的新手,基本上我的最終結果是要求輸入“ pin碼”,並且該pincode將在文本文檔中,但是我不確定如何將它們設置為下面的數組? 我的數組的輸出保持為null
而不是文檔中的文本。 漁獲物也是出來的。
文本文檔與Java類放在同一個文件夾中,我應該使用完整路徑嗎?
文本中只有兩個項目,例如,我希望每個項目分別位於listArray [0]和listArray [1]中
如果文檔中的字面意思是:
1111,john doe,5000 / n * enter * 2222,glen johnson,4000
我需要在左邊的引腳號為array [0],名稱為array [1]
這是事后的想法,沒有考慮擁有多個帳戶
到目前為止,這是我嘗試過的:
public class Confirmation extends ATMrunner {
public static void pinConfirm() {
String[] listArray = new String[2];
try {
BufferedReader br = new BufferedReader(new FileReader("C:\Users\workspace\TellerMachine\src\bankATM\userlist.txt"));
String line = "";
while ((line = br.readLine()) != null) {
for (int i = 0; i <= 1; i++) {
listArray[i] = line;
}
}
br.close();
} catch (IOException ioe) {
System.out.println("File may be corrupted; please contact admin");
}
System.out.println(listArray[0]);
System.out.println(listArray[1]);
}
}
感謝一些幫助!
好的,首先要做的是:
全路徑給我一個無效的轉義序列錯誤。
這是因為在Java中,實際上有許多編程語言。 聲明字符串時,可以使用一些特殊字符; 例如“換行”字符\\n
,這是一個告訴正在讀取String數據的字符,該位置應該有換行。 您可以在Wikipedia文章中了解有關這些“轉義序列”的更多信息。
聲明絕對路徑時,其中包含多個\\
字符,這些字符用來表示這些特殊字符。 因此,對於\\Users
,可以看到您正在嘗試輸入值\\U
的“特殊字符”,而該字符沒有。 為了解決這個問題; 只需將所有\\
字符替換為\\\\
。
其次,在您的while(和for)循環中讀取文件時; while循環的每次執行都會得到文件的新行。
(line = br.readLine()) != null
然后,然后遍歷String數組“ listArray”,並將每個元素設置為當前行。
for (int i = 0; i <= 1; i++) {
listArray[i] = line;
}
這里將出現的問題是,您將要讀取文件的第一行,然后將數組的兩個元素設置為該行。 然后,您將讀取文件的另一行; 並將所有元素設置為該行。 接着...
要更改此設置,我建議使用如下技術:
int index = 0;
String line = "";
while((line = br.readLine()) != null) {
listArray[index] = line;
index++;
}
現在,這個while循環將執行與您相同的操作,但是使用此循環; 您還將跟蹤數組的當前索引。 while循環的每個循環將讀取一行並為其分配當前索引,然后它將遞增索引。 這種方法的問題在於,如果文件包含多於2行,則while循環將第三次運行,並嘗試在數組上分配越界索引。 要更改此設置,您還可以嘗試在嘗試分配索引之前檢查索引是否在數組范圍內,如下所示:
while((line = br.readLine()) != null && index < listArray.length)
當然,有更好的方法可以完成所有這些操作,但是所有這些都可以使您的應用程序正常運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.