0

我收到此错误:

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();
}
//================================================================
4

2 回答 2

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
}

PS:你在 miPsicodelia 任何地方实例化你的对象吗?如果没有,这会给你一个 NullPointerException.

于 2012-09-06T07:22:31.827 回答
1

好吧,除非我错过了什么,否则您的public void pintar()方法是不带参数声明的,因此您不能使用任何参数调用它。您必须使用所需数量和类型的参数声明它:

public void pintar(int para1, int para2, int para3, int para4, int para5, int para6)
{ 
   //Do something with the parameters.
}
于 2012-09-06T07:25:42.437 回答