2014-11-01 230 views
0

我正在嘗試構建一個簡單的即時訊息程序。現在我正在爲serevr類編碼什麼在服務器端運行。我目前正在使用的方法是whileChatting。 該方法應該在聊天窗口上顯示字符串消息,直到用戶點擊END。 現在,爲了讀取在窗口的輸入對象我使用這行代碼:在java中可以使用readObject方法的替代方法是什麼?

message=(String)input.readObject(); 

其顯示出「方法未找到」錯誤。爲什麼如此?如果在java庫中不存在這樣的方法,那麼可以使用什麼呢?我要粘貼代碼爲whileChatting方法:PLZ問我,如果你需要看到代碼全班]

 private void whileChatting(){ 
    String message="You are now connected"; 
    sendMessage(message); 
    ableToType(true); 
    do{ 
     try{ 
      message=(String)input.readObject(); 
      showMessage("\n"+message); 

     }catch(ClassNotFoundException classNotFoundException){ 
      showMessage("\n the input cean't be read"); 
     } 

    }while(!message.equals("CLIENT-END")); 

    } 
+2

什麼是輸入?它是一個ObjectInputStream嗎?如果沒有,那麼你沒有找到方法是有道理的。您的問題中缺少關鍵信息。 – 2014-11-01 23:22:44

+0

氣墊船Full of Eels,我不太熟悉ObjectInputStream,是的,可能就是這樣!我可以告訴輸入的是它的任何字符串對象,即字符消息用戶(或客戶端)將輸入的內容以及服務器端將讀取的內容。你需要查看課程的完整代碼嗎? – Ryan 2014-11-01 23:31:33

+2

瑞恩 - 你還沒有告訴我們 - 什麼是'輸入'?您只能使用該變量可用的方法,並且不能組成該變量不存在的方法。那就是你必須開始的地方。 – 2014-11-01 23:40:24

回答

0

幽州:

的輸入的InputStream。我已經這樣分配它:private InputStream input;

然後您可以檢查API以查看InputStream有哪些方法可用,並且您會看到readObject()不存在。請注意,您應該習慣於這樣做,因爲Java API將爲您提供許多您需要知道的信息,以便您可以使用核心Java中提供的類。同樣,readObject()不是InputStream的方法,而是ObjectInputStream的一種方法。現在一種可能的解決方案是將你的InputStream包裝到一個ObjectInputStream中,這樣做可以讓你使用readObject()方法,但是我會建議你不要這樣做,甚至不用打擾readObject()或任何類似的方法。相反,爲什麼不用你的InputStream創建一個Scanner對象,並通過它的nextLine()方法直接從Scanner對象獲得你的Strings。