2017-05-16 27 views
2

我有一個txt文件,我讀它。 這就是它說:在JAVA中讀取文件,等於不起作用

CONTRACT 
{ 
    CODE 1 
    SERVICE "Pro" 
    NAMESURNAME "Takis Papadopoulos" 
    PHONENUMBER 6980021739 
    DATE "19/3/2007" 
    TYPE Internet 
    DISCOUNT 10 
    MONTHLY_USAGE{ 
     MB_USED 200 
    } 
} 

我創建了一個BufferedReader,我用線= read.readLine()方法。但問題是,當談到這段代碼:

if(line.trim().startsWith("SERVICE ")){          
    tmp_service = line.trim().substring(8); 
    System.out.println(tmp_service);//Prints "Pro" 

    if(tmp_service.equals("Pro")){ 
     System.out.println("1");//Never gets in 
    }else if(tmp_service.equals("Internet Family")){ 
     System.out.println("2") 
    }else{ 
     System.out.println("3");//Prints this 
    } 
    count++; 
    System.out.println(tmp_service);//Prints "Pro" 
} 

它始終打印「3」,即使平等應該是「真實的」事實並非如此。我也嘗試過「startsWith()」,但它也不起作用。

+1

請提供一個[mcve]而不是片段,這樣可以更容易地幫助你,這個問題對未來的讀者有更多的價值 –

+0

引導和不可見的空白怎麼樣?也許'tmp_service'包含'「Pro」 '? –

+0

如果格式是alwa ys相同的正則表達式或一些string.split,你可以將所有這些轉換成對象。甚至檢查格式並設置默認值。 –

回答

6

你在你的文字的報價,所以你需要將它們包含在您的支票

if(tmp_service.equals("\"Pro\"")){ 

在我看來,一個更好的解決辦法是刪除所有「'如果你希望有許多事件,其總是更好地推廣你的情況

+0

現在它不打印任何東西:( –

+0

對不起,其等於不是開始於 –

+0

它的工作,非常感謝你! –

1

您嘗試比較「‘親’」到「專業」。不要忘了逃生引號。

在Java中,轉義字符是一個反斜槓(\)。

解決你的情況:if(tmp_service.equals("\"Pro\""))

Source Java SE doc前面有反斜槓字符(\)是轉義序列和有特殊含義的編譯器。 [...]當在打印語句中遇到轉義序列時,編譯器會相應地解釋它。例如,如果你想要把引號內的引號必須使用轉義序列,\」在內部空間的報價 要打印一句話

She said "Hello!" to me. 

你會寫:

System.out.println("She said \"Hello!\" to me."); 
相關問題