2013-02-12 61 views
0

即時嘗試創建一個類,該類可以存儲在一個數組中,這將使我更容易處理從客戶端到服務器的用戶輸入。不能將void轉換爲「classname」

這裏是我的PongPlayerThread

package Pong; 

import java.net.*; 
import java.io.*; 

public class PongPlayerThread extends Thread 
{ 
private Socket socket = null; 
private String pongData = ""; 

public PongPlayerThread() 
{ 
    //clear 
} 

public PongPlayerThread(Socket socket, int id, String data) 
{ 
    //super("PongPlayerThread"); 
    pongData = data; 
    this.socket = socket; 
} 

public void passData(String data) 
{ 
    pongData = data; 
} 

public void run() 
{ 
    try 
    { 
     PrintWriter out = new PrintWriter(socket.getOutputStream(), true); 
     while(true) 
     { 
      out.println(pongData); 
     } 
    } 
    catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 
} 

} 

現在在這條線我的服務器上,其中一個客戶端可以連接

players[0] = new PongPlayerThread(serverSocket.accept(), 0, rtnInfo()).start(); 

我得到這個錯誤 「無法從虛空轉換爲PongPlayerThread」這是爲什麼?我已經搜索過,但當你的類名出現錯誤時,這很難。

我現在有這樣的代碼

 players[idPlayer] = new PongPlayerThread(serverSocket.accept(), idPlayer, rtnInfo()); 
     players[idPlayer].start(); 

但是當一個客戶端連接我得到這個錯誤 傍 400.0:301.0:60.0:300.0:740.0:300.0 服務器啓動 服務器是安裝程序,並會嘗試創建線程Pong.PongServer.main(PongServer.java:82)插座 異常「主」顯示java.lang.NullPointerException

它正指向該行 玩家[IDP layer] = new PongPlayerThread(serverSocket.accept(),idPlayer,rtnInfo()); ???

+0

開始返回void – smk 2013-02-12 22:36:28

回答

5
players[0] = new PongPlayerThread(serverSocket.accept(), 0, rtnInfo()); 
players[0].start(); 
+0

謝謝你這麼多:d – Canvas 2013-02-12 22:39:34

+1

好吧,當我現在運行我的代碼,我得到這個 傍 400.0:301.0:60.0:300.0:740.0:300.0 服務器啓動 服務器是安裝程序,並會嘗試創建一個套接字 線程「main」中的異常java.lang.NullPointerException \t at Pong.PongServer.main(PongServer.java:82) 如果您希望服務器的代碼只是說 – Canvas 2013-02-12 22:43:44

2

的問題是,Thread.start()返回void,而你正在嘗試的new PPT(...).start()結果分配給players[0]

new PPT(...).start()返回void,因此編譯器抱怨說它不能將此void轉換爲PongPlayerThread類型的對象。

相關問題