我收到此错误:
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();
}
//================================================================
答案 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.
}