我正在嘗試為我的 Ap comp sci 專案制作一個較小版本的 Pwned 密碼 ( https://haveibeenpwned.com/Passwords )。除了兩件事之外,一切都很好:
(問題1)(我的代碼影像更好地顯示)我在我的jForm源代碼下面有這個,它宣告了每個按鈕/等以及它們的作用。雖然我收到此錯誤:“內部類 PassCheck.check 中的非法靜態宣告。我現在不知道如何解決此問題。
第二個問題是使用 FileReader 和 Buffered Reader。我希望程式讀取從 jForm 輸入的文本并將其與包含常用密碼串列的檔案進行比較。我怎樣才能做到這一點?到目前為止,這是我僅練習 FR 和 BR 的代碼:
import java.io.*;
public class MainFileReader {
public static void main(String[] args) throws Exception{
String refpass, input;
input = "1234";
FileReader fr = new FileReader("C:\\Users\\tcoley\\Downloads\\207pass.txt");
BufferedReader br = new BufferedReader(fr);
while((input = br.readLine()) != null){
refpass = br.readLine();
我停在這里。我很抱歉,因為 Java 不是我的強項,但非常感謝任何幫助!
uj5u.com熱心網友回復:
對于您的問題 #2 -input是要使用的字串變數保存您要在檔案中找到的密碼,但在將其應用于讀取一行時消除其內容:(input = br.readLine()). 它現在將保存當前讀取的檔案行(這不好)。您需要改用該refPass變數,例如:(refPass = br.readLine()).
您只需要br.readLine()在回圈中使用一次。您的代碼現在有效地做的事情(如果它運行)是在while回圈的每次迭代中讀取兩 (2) 行檔案。它可能會陷入例外,因為在第二次讀取中沒有對 null 的保護。又不行了。
讀取檔案行后,請確保它實際上包含某些內容。很多時候,一個檔案中會有一個空行,如果不處理,它可能會把活動扳手扔進東西里。要檢查這一點,您可以在讀入一行后refPass執行如下所示的操作:
while((refPass = br.readLine()) != null) {
// remove leading & trailing whitespaces (if any).
refPass = refPass.trim();
// Skip past blank lines in file (if any).
if (refPass.isEmpty()) {
continue;
}
// .... rest of code ...
}
現在要完成回圈塊代碼,您只需將讀入的密碼與input變數中包含的密碼(例如:)進行比較"1234"。要做到這一點,你可以有這樣的事情:
if (refPass.equals(input) {
System.out.println("Password Found!")
break; // Break out of the 'while' loop and close file.
}
另一方面:不要==用于比較字串的內容相等性,這可能并不總是像你期望的那樣作業。請改用String#equals()方法。閱讀提供的鏈接。
在回圈結束和while回圈之外,請務必關閉閱讀器,例如:br.close();以便釋放對檔案的保留并釋放資源。
uj5u.com熱心網友回復:
您不需要使用 BufferedReader。緩沖只是為了低效的讀寫(即做多次讀寫)
使用PathandFiles代替
Path p = "C:\\Users\\tcoley\\Downloads\\207pass.txt";
String file = new String(Files.loadAllBytes(p));
uj5u.com熱心網友回復:
檔案長什么樣?有很多方法可以格式化檔案,為了簡單起見,這只是假設它是每行一個單詞:
隨著線
refpass = br.readLine();
您正在從檔案中獲取該行
boolean isEqual = refpas.equals(input);
這允許您單獨評估線路。請記住,'==' 不是在 Java 中使用字串比較的方法。
("cat" == "cat") != ("cat".equals("cat"))
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/457791.html
上一篇:底部面板的垂直對齊
下一篇:如何用字串不斷更新畫布?
