2014-06-08 105 views
1

首先,我的英語很抱歉,我是法語。如何爲多維數組創建一個getter方法和一個setter方法?

以下是我正在試圖通過一個數學符號寫這個問題要解決的問題:

我有座標的夫妻看起來像這樣:(x, y)

An = {(Xn;Yn)}

array[An][(Xn;Yn)] = {{X1;Y1}{X2;Y2}...{Xz;Yz}};

在我的程序中,我需要爲多維數組創建一個getter和setter。

這是我的代碼:

//Infos for animations of objects 

    //Sorting 
    Random random1 = new Random(); 
    int obscMin=0, obscMax=4; //I sort them to know how many obstacles will have to be created. obsc is the obstacle 
    int nbreObsc = obscMin + random1.nextInt(obscMax - obscMin); //nbreObsc is the number of obstacles 
    //End of sorting 

    /*Here's the model of a table: 
    A couple: An={(Xn;Yn)} 
    Tableau1[An][(Xn;Yn)]={{X1;Y1}{X2;Y2}...{Xz;Yz}};*/ 

    float posObsc [] []=new float [nbreObsc] [2]; //New table, which will contain the positions of the obstacles 

    //Obstacle position getter and setter 
    public float[][] getPosObsc(){//getters 
     return posObsc; 
    } 
    public void setPosObsc(float[][] posObsc){//setters 
     this.posObsc=posObsc; 
    } 
    //End of obstacle position getter and setter 

    protected boolean detruireObsc=false; //"detruireObsc" means "destroyObstacle" 

    //Algorithm that defines the movement of obstacles 
    protected void obscDeplacemt(){ 
     for(int i=1;i<=nbreObsc;i++){ 
     //Sorting to determine the Xs 
     float ordMin=0,ordMax=width; 
     float ordObsc = ordMin + (float)Math.random() * (ordMax - ordMin); //ordObsc means obstacleXPosition 
     setPosObsc(posObsc [i][0]); 
     //End of sorting 
     } 
    } 
    //End of obstacle movement algorithm 

這是我從日食出現錯誤:

The method setPosObsc(float[][]) in the type Activity01Jeux.RenderViewJoueur is not applicable for the arguments (float)

+1

你不介意我翻譯的意見成英文? Est-ce-queçavousdérangeraitsi je traduirais vos commentaires du code en Anglais? – Runemoro

+0

請提供可編輯的代碼。 –

+0

@ Runemoro // Absolumt pas c'est avec grd plaisir!Traduit traduit et traduit encore:p –

回答

0

的代碼行:

setPosObsc(posObsc [i][0]); 

是調用setPosObsc()方法與一個單一的float eleme nt從數組中排列。但是該方法需要一個數組數組。

爲了使代碼編譯,你可以寫:

setPosObsc(posObsc); 

雖然這可能不是你想要的!如果你正在嘗試寫在一個特定的點把一個浮動到陣列的方法,你需要這樣的事情:

void setObstacleAt(int obstacleIndex, int boundaryIndex, float shiftDistance) { 
    posObsc[obstacleIndex][boundaryIndex] = shiftDistance; 
} 

我在做什麼你的數組包含胡亂猜測。作爲一個方面說明,不要寫評論來解釋方法名稱,你可以考慮使用更長或更精確的方法名稱而不用縮寫。在Java中,變量和方法名稱的長度沒有實際限制。

順便說一下,當英語不是您的第一語言時,我們有勇氣寫下英文的StackOverflow。即使在Runemoro的編輯之前,我也沒有理解你的問題。

+0

Big thk!這是我需要的確切答案!塗ge gars! –

+0

@Pif_Paf_Pouf:將節目添加到節目中,然後輕鬆調整節奏,按Ctrl + Shift + F,即可調整節目播放時間。 – Runemoro

+0

@ Runemoro // Sympa je savais pas.Merci a toi。 –

0

你的getter和setter方法很好。錯誤是因爲在obscDeplacemt()的最後一行代碼中,您正在調用setPosObsc(posObscp [i] [0])。 posObscp [i] [0]會給你一個浮點數,當你的setter方法在參數中需要一個float數組才能使其工作。祝你好運!

+0

Thk you.Can you give me a code exemple?請。 –

0

貌似你試圖做的是:

posObsc[i][0] = ordObsc; 

有沒有必要,如果你在同一類是使用setter方法。

如果你希望能夠在外部設置(而不是覆蓋整個陣列)的索引的元素值,有兩種方法去做:

1)(不推薦)

既然你暴露在你的getter整個陣列,理論上可以調用

getPostObsc()[i][0] = ordObsc; 

2)(推薦)

更改您的getter和setter到

public float getPosObsc(int x, int y){ 
    return posObsc[x][y]; 
} 
public void setPosObsc(int x, int y, float val){ 
    this.posObsc[x][y] = val; 
} 

現在,您可以使用更新的setter與索引的元素:

setPostObsc(i, 0, ordObsc); 
+0

thk你,它工作正常,但它不是我的問題。 ;) –

+0

thk這是我需要的確切答案! T'es le meuilleur merci a toi :) –

相關問題