2016-04-09 26 views
0

Oldukça basit bir sorunum var ama doğru olmaya çalışıyorum. Temel olarak, this. kullanarak bazı yöntemleri tanımlanmış bir kurucu var. Bu yöntemlerden birini bir parametreden geçmek istiyorum, ama bir hataya yol açmayacak şekilde bildirmek için uğraşıyorum. Ben bir parametre kabul etmek this.adj nasıl alabilirimBir kurucudaki bir yönteme bir parametrenin geçirilmesi

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; 
    } 

} 

: Bu benim kodudur? Ayrıca bir yöntem beyanı oluşturmayı denedim, ancak bu işi de alamadım. Kullanmam gereken bir çeşit desen var mı?

Teşekkür

DÜZENLEME: Özür - kod alıntısında bir hata yaptı. this.adj[v], kurucunun içinde yalnızca erişimi olan gA dizisinin bir satırını döndürmelidir, bu nedenle işlevi dışardan taşıyamam.

cevap

2

Bu:

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

yanlış yol var. Sadece kullanın: yöntem static olup olmadığını

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

yapıcı metotta çağırmak olduğundan, dolayısıyla hiç önemli değil. Bir kurucu her ikisini de arayabilir.


Düzenleme:

Ben adj [v] v gA satırını dönmek için ben bunu yapabilirsiniz

yukarıdaki kodu kaydetmiştiniz istiyorum:.

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

Özür, esasen yukarıda kodunda bir hata yapılmış - 'adj (v) 'aslında dizideki bir sıraya atıfta bulunmaktadırlar' gA [V]' – MDalt

+0

Yani, parametre olarak satır geçmek istiyor 'adj' işlevine – Hackerdarshi

+0

@MDalt Düzenlemeye bakın – Hackerdarshi

0

neden tanımladığınız yöntemi çağırmıyorsunuz? Ben

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 
    } 

} 
İlgili konular