2014-05-02 82 views
-2

我試圖從服務器獲取文本,然後檢查它,知道採取的文本採取了哪些操作。問題是,當我嘗試檢查接收到的文本是否爲「已退出」時,如果收到的文本確實是「已退出」,則查詢總是返回值「false」。Eclipse - 函數問題

下面是代碼:

class Get_Message_From_Server implements Runnable 
    { 
    public void run() 
    {  
     InputStream iStream = null; 
     try 
     { 
     iStream = Duplex_Socket_Acceptor.getInputStream(); 
     } 
     catch (IOException e) 
     { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     } 
     //Create byte array of size image 
     byte[] Reading_Buffer = null; 

     try 
     { 
      Reading_Buffer = new byte [Duplex_Socket_Acceptor.getReceiveBufferSize()]; 
     //New_Buffer = new byte [100]; 
     } 
     catch (IOException e1) 
     { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
     } 

     byte[] Byte_Char_1 = new byte[1]; 

     int Byte_String_Lenght = 0; 

     //read size 
     try 
     { 
     iStream.read(Reading_Buffer); 

     String Reading_Buffer_Stream_Lenghtor = new String(Reading_Buffer); 

     //System.out.println("full : " + Reading_Buffer_Stream_Lenghtor); 

     Byte_String_Lenght = Reading_Buffer_Stream_Lenghtor.indexOf(new String(Byte_Char_1)); 
     } 
     catch (IOException e) 
     { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     } 
     //Convert to String 
     Meassage = new String(Reading_Buffer); 

     Meassage = Meassage.substring(0, Byte_String_Lenght);//The text that received 

     Message_Getted = 1; 
    } 
    } 

查詢:

if(Message_1 != "Exited")//the message query 
    { 
    System.out.println("Continued 253"); 
    continue; 
    } 

它總是返回值 - 假

  • 其知道該消息是UTF重要 - 8編碼

所以我怎麼能解決這個問題?

+0

沒有,我檢查這個和它沒有工作給我。這就是爲什麼我問這個問題... – anri97

回答

0

如果使用oparators比較字符串,Java將不看字符串的內容,但在存儲器中的參考。爲了比較在Java中的字符串的內容,你應該使用下列內容:

String Message_1; // Hopefully has a value sent by the server 
if(Message_1.equals("Exited")) { 
    // Do stuff when exited 
} else { 
    // Do stuff when not exited 
} 
+0

我檢查了這一點,它不適用於我。 :( – anri97

+0

有檢查什麼的'Message_1'字符串?它可能不包含您期望則字符序列。 – Smokez

+0

是的,我檢查了它。它仍然犯規工作。 – anri97

0

String是一個變量 - 和變量應與小寫字母開頭 - 請閱讀Java代碼的約定。另外要檢查,如果您的郵件包含你的事情應該只是做System.out.println(Message_1);和字符串如果郵件中包含你所期望你比較字符串做

if(Message_1.equals("Exited")) { 
    System.out.println("Yes they are equal"); 
} else { 
    System.out.println("No they are not"); 
} 

如果將打印「不,他們不是」這只是意味着你的變量Message_1不是你認爲的那樣..就這麼簡單。沒有這樣的事情,因爲.equals方法不起作用。它的變量沒有;)

+0

我試試這個,這也犯規幫助我。 – anri97

+0

@ user3595530確定,所以讓你打印MESSAGE_1的價值?有什麼結果呢? –

+0

結果是「已退出」 6個字符lenght。 – anri97