2011-08-01 19 views
0

我正在寫這段代碼來查看一個txt文件,並找到一個用戶輸入的字符串。我的txt文件包含行本身(這個信息將是以後重要):代碼在txt文件中找不到字符串。我的代碼有什麼問題?

第一線 - 空。 第二行 - idan 第三行 - yosi

現在,如果用戶輸入「idan」作爲用戶(不帶「」),代碼將會找到它。如果用戶輸入「yosi」,它不會找到它。這就像我的代碼只讀第二行。我是編程新手,這只是我學習如何讀寫文件的練習,請耐心等待。

這裏是代碼(有一個陷阱,也else語句,但他們在那裏離開的長度原因):

//Search for the specific profile inside. 
     try{   
      BufferedReader br = new BufferedReader(new FileReader("d:\\profile.txt")); 
      System.out.println("Searching for your Profile..."); 


      int linecount = 0; 
      String line; 
      while (br.readLine() !=null){ 
       linecount++; 

       if(userName.contentEquals(br.readLine())){ 
        System.out.println("Found, " + userName + " profile!"); 
        break; 
       } 
       else{ 

       } 
+0

請發佈您的profile.txt頂部5行以及 – Woot4Moo

+0

'userName.contentEquals(br.readLine())'您需要發佈與此行相關的相關代碼。現在我們沒有關於您的代碼的所有信息來爲您提供有用的信息。 –

回答

2

問題是這樣的:

*if(userName.contentEquals(br.readLine())){* 

你正在閱讀另外一條線。你會發現它讀取你的實現每隔一行。也就是說線2,4,6等

2

的問題是在以下位置:

if(userName.contentEquals(br.readLine())) 

你不需要再讀一遍,因爲你已經在while循環中讀取數據:

while (br.readLine() !=null) 

所以,你基本上看第1行(什麼都不做吧),然後讀2號線(用它做什麼),並且過程重新開始。

1

你想要做這樣的事情 ... 串線; 而((行= br.readLine())!= NULL){ ... }

BufferedReader.readLine()每次調用從文件中讀取下一個可用行。由於您讀取while語句中的一行,並讀取if語句的下一行,因此您只檢查偶數行。

+0

感謝您的回覆!我做了你和其他人說的,並從代碼中刪除了一個「readLine」,但它仍然沒有找到用戶輸入。這裏是新代碼: \t int linecount = 0; \t \t \t \t絃線; \t \t \t \t \t \t \t \t而((線= br.readLine())!= NULL){ \t \t \t \t \t \t \t \t \t \t \t \t \t如果(用戶名==線){ \t \t \t \t \t \t的System.out.println( 「實測值」 +的userName +「配置文件「)!; \t \t \t \t \t} \t \t \t \t \t其他{ \t \t \t \t \t \t的System.out.println( 「無法找到」); \t \t \t \t \t} – Yosi199

+0

我現在在讀太陽單證的的BufferedReader API和具體的.readLine方法,並且它表示: 「A線被認爲是由(換行的任一項‘\ N’終止),一個回車符('\ r')或一個回車符,緊跟一個換行符。「 難道我的while循環無法讀取文本行,因爲它們沒有以\ n \ r結尾? (他們真的不)。 – Yosi199

+1

不要將'String'與'=='進行比較。使用'.equals()'。 – Jeffrey