2017-09-13 18 views
1

我有一個javafx應用程序,它有兩個類,即「Client」和「Interface_Client_Impl」。我在「Client」類中定義了一個int數組,並初始化了該數組。當我試圖從Interface_Client_Impl訪問索引i處的數組內容時,它總是返回0. Interface_Client_Impl類被遠程訪問,並且能夠獲取變量的值而不是數組。我哪裏錯了。 -_- 這就是我所擁有的。在一個類中初始化的數組,但在另一個類中不可訪問的內容

public class Client extends Application 
{ 
    public int size = 4; 
    public int array[] = new int[size]; 
    public int min = 1; 
    public int max = 99; 

    public static void main(String[] args) throws Exception 
    { 
     launch(args); 
    } 

    @Override 
    public void start(Stage primaryStage) throws NotBoundException, RemoteException 
    { 
     initialize_arr(); 
     //other codes 
    } 

    public void initialize_arr() 
    { 
     Random rand = new Random(); 
     for(int i = 0; i < size; i++) 
     {//initialize with random values 
      int val = rand.nextInt(max - min + 1) + min; 
      array[i] = val; 
     } 
    } 
} 

//其他類

public class Interface_Client_Impl extends UnicastRemoteObject implements Interface_Client 
{ 
    public Client client = new Client(); 

    @Override 
    public int exchange(int val) 
    { 
     Random rand = new Random(); 
     int pos = rand.nextInt(client.size); 
     int return_val = client.array[pos]; 
     client.array[pos] = val; 
     return return_val; 
    } 
} 
+1

'Interface_Client_Impl.client'情況下,纔會創建(稱爲構造函數),但沒用過由fx框架,因此它的'開始'方法不會被觸發。因此,該數組未被初始化。您必須訪問框架創建的實例,其中調用了「start(Stage primaryStage)」,而不是創建自己的實例。 – fairtrax

+0

[這個問題]的答案(https://stackoverflow.com/questions/33303167/javafx-can-application-class-be-the-controller-class)有一個相關的解釋。 – Itai

回答

0

您剛纔創建的實例的客戶端類Interface_Client_Impl

您需要調用客戶端實例的數組初始化。您可以通過以下兩種方式

通過調用公共方法client.start(primaryStage)

調用公共方法client.initialize_arr()

+1

謝謝,後者工作 – Deo

相關問題