2012-09-06 89 views
0

我得到這個錯誤:方法不適用於參數

the method pintar() in the type t33.Psicodelia is not applicable for the arguments (int,int,int,int,int,int)

我該如何解決這個問題?

我有兩個類和主選項卡:

1級

public class Logica { 
    Psicodelia miPsicodelia; 


    public Logica() { 
    } 

    public void pintar() { 
    miPsicodelia.pintar(width/2, height/2, height/4, 0, 0, 1); 
    miPsicodelia.kaleidouno(posX, posY, rad, ang, depth, tam1); 
    } 

    public void pressed() { 
    miPsicodelia.pressed(); 
    } 
} 

2級

public class Psicodelia { 
    private float anguloGrande; 
    private int numBolas, contador; 


    public Psicodelia() { 
    stroke(255); 
    this.anguloGrande = 0.0; 
    this.numBolas = 7; 
    } 


    public void pintar() { 
    //fill((int)random(0, 255), (int)random(0, 255), (int)random(0, 255)); 
    fill(255, 255, 0, (int)random(20, 100)); 
    pintar(width/2, height/2, height/4, 0, 0, 1); 
    anguloGrande += .02; //velocidad de rotacion 
    } 

    public void kaleidouno(float posX, float posY, float rad, float ang, int depth, float tam) { //pinteme las bolas en la pos posX, posY, reciba un float de radianes y de angulos, y por ultimo un int de profundidad 
    if (depth < contador) { 
     tam=(int)random(0.5, 1.5); 
     float anguloPeq = TWO_PI/numBolas; 
     for (int i=0; i < numBolas; i++) { 
     float nuevoRad = rad/2; //distancia y tamaño de las bolas entre ellas 
     float nuevoAng = ang + i*anguloPeq - anguloGrande; 
     float X = cos(nuevoAng)*rad + posX; 
     float Y = sin(nuevoAng)*rad + posY; 
     pintar(X, Y, nuevoRad, nuevoAng, depth + 1, 1); 
     } 
    } 
    else if (rad < 2) { 
     ellipse(posX, posY, 2.0*tam, 2.0*tam); 
    } 
    else { 

     ellipse(posX, posY, rad*2.0, rad*2.0); 
    } 
    } 

    public void pressed() { 
    contador++; 
    if (contador >= 3) { 

     contador--; 
    } 
    } 



    float getPosX() { 
    return posX ; 
    } 


    float getPosY() { 
    return posY ; 
    } 
} 


// and the main tab 


Logica miLogica; 

//================================================================ 

void setup() { 
    size(800,600); 
    smooth(); 

miLogica= new Logica(); 

} 

//================================================================ 

void draw() { 
    background(0); 
miLogica.pintar(); 

} 

//================================================================ 

void mousePressed() { 
miLogica.pressed(); 
} 
//================================================================ 
+1

它看起來像類'Psicodelia'中),您呼叫的'pintar(寬度/ 2,高度的方法'pintar('/2,height/4,0,0,1);'當你真的應該調用'kaleidouno(width/2,height/2,height/4,0,0,1)''。 –

+1

其中是pintar(int,int,。,。,。,。,。,。)的函數定義。你有沒有參數在類2中作爲pintar()的方法; – gks

回答

3

你調用的方法

Psicodelia miPsicodelia; 
miPsicodelia.pintar(width/2, height/2, height/4, 0, 0, 1); 

但你Psicodelia類上LY有以下pintar方法:

public void pintar(); 

要叫你乾的,你必須給方法pintar()所希望的參數的方式。

例如:

public void pintar(int a, int b, int c, int d, int e, int f){ 
    // do whatever you want here 
} 

P.S:你在任何地方實例化miPsicodelia對象?如果沒有,這會得到一個NullPointerException

+0

謝謝,我試過了,但如果我這樣做,我會得到意想不到的令牌:int –

+1

你究竟試過了什麼?你在'Psicodelia'類中實現了'public void pintar(int a,int b,int c,int d,int e,int f)'方法嗎?錯誤到底在哪裏?行號會有幫助。 – Tarlen

+0

我寫了這行。 miPsicodelia.pintar(int width/2,int height/2,int height/4,int 0,int 0,int 1); –

0

那麼,除非我錯過了什麼,否則你的public void pintar()方法被聲明爲沒有參數,所以你不能用任何參數調用它。你必須與你的期望的參數數目和類型來聲明它:

public void pintar(int para1, int para2, int para3, int para4, int para5, int para6) 
{ 
    //Do something with the parameters. 
} 
+0

我知道,但我上面說過,如果給它的參數我得到意想不到的令牌:int –

+1

我想你誤會了。 _declaration_是錯誤的。你可以創建方法爲'public void pintar(){// ...}'而不需要任何參數。所以當你試圖調用'miPsicodelia.pintar(width/2,height/2,height/4,0,0,1)'時,你的方法不知道如何處理它所得到的數字。 – Christian

相關問題