2016-04-09 15 views
0

私はかなり基本的な問題を抱えていますが、私は正しいことに苦労しています。基本的には、私はthis.を使って定義されたいくつかのメソッドを持つコンストラクタを持っています。私はこれらのメソッドの1つをパラメータに渡したいが、エラーを発生させない方法で宣言するのに苦労している。これは私のコードです:コンストラクタのメソッドにパラメータを渡す

public class Graph { 
    public Graph(int[][] gA) { 
     boolean[] visited = new boolean[gA.length]; 
     Arrays.fill(visited, 0, gA.length, false); 

     //this is the bit I'm struggling with: 
     this.adj(int v) = gA[v]; 
     this.array = gA; 
     this.visited = visited; 
    } 

} 

this.adjにパラメータを受け入れるにはどうすればよいですか?私はメソッド宣言の作成も試みましたが、この作業もできませんでした。私は使うべきデザインパターンがありますか?

おかげ

EDIT:謝罪は - コードの抜粋でミスを犯しました。 this.adj[v]は、gA配列の行を返す必要があります。この配列はコンストラクタ内でしかアクセスできないため、関数を外部に移動することはできません。

答えて

2

この:

this.adj(int v) = adj(v); 

は間違った方法です。ただ、使用:

adj(v); // Call the method adj with the parameter v 

をあなたは、コンストラクタでそれを呼び出しているので、この方法はstaticであるかどうか、したがって、それは問題ではありません。コンストラクタは両方を呼び出すことができます。


編集:

私はADJ [V] vでのGa行を返すために、私はあなたが行うことができます

上記のコードを編集したとします。

gA[v] = adj(v); 
+0

謝罪 - だから 'ADJ(v)は'実際アレイ 'ジョージア州行を指す[V]' – MDalt

+0

、パラメータとして行を渡したいです関数 'adj'に? – Hackerdarshi

+0

@MDalt編集を参照 – Hackerdarshi

0

なぜあなたは定義したメソッドを呼び出さないのですか?私は実際に上記のコードでエラーを作った

public class Graph { 
    private YOUR_TYPE adj; 
    public Graph(int[][] gA) { 
     boolean[] visited = new boolean[gA.length]; 
     Arrays.fill(visited, 0, gA.length, false); 

     //this is the bit I'm struggling with: 
     this.adj = adj(v); 
     this.array = gA; 
     this.visited = visited; 
    } 

    YOUR_TYPE adj(int v){ 
    return .... something from YOUR_TYPE 
    } 

} 
関連する問題