该方法不适用于参数

时间:2012-09-06 06:39:33

标签: java class methods arguments

我收到此错误:

  

t33.Psicodelia类型中的方法pintar()不适用于参数(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();
}
//================================================================

2 个答案:

答案 0 :(得分:3)

您调用了方法

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

但您的Psicodelia课程只有以下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

答案 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.
}