简体   繁体   English

该方法不适用于参数

[英]the method is not applicable for the arguments

I get this error: 我收到此错误:

the method pintar() in the type t33.Psicodelia is not applicable for the arguments (int,int,int,int,int,int) t33.Psicodelia类型的方法pintar()不适用于参数(int,int,int,int,int,int)

How can I solve this? 我该如何解决?

I have two classes and the main tab: 我有两个类和主选项卡:

Class 1 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();
  }
}

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

You called the method 你叫方法

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

But your Psicodelia class only has following pintar method: 但是您的Psicodelia类仅具有以下pintar方法:

public void pintar();

To call it the way you did you must give the method pintar() the wished parameter. 要按照您的方式进行调用,必须为方法pintar()所需的参数。

For Example: 例如:

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

PS: Do you instantiate your miPsicodelia Object anywhere? PS:您 miPsicodelia 在任何地方 实例化了 miPsicodelia 对象? If not this will get you a NullPointerException . 如果不是这样,将为您提供 NullPointerException

Well, unless I miss something, your public void pintar() method is declared with no parameters, so you can't call it with any. 好吧,除非我错过了什么,否则您的public void pintar()方法是不带参数的声明的,因此您不能使用任何参数来调用它。 You'd have to declare it with your desired number and types of parameters: 您必须使用所需数量和参数类型进行声明:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM