Also zuerst habe ich diese Klasse:Wie behebe ich "Methode kann nicht aufgelöst werden"?
public float getPixel(int height, int width)
{
return data[height][width];
}
public void setPixel(float value, int height, int width)
{
if (value > getMax())
value = getMax();
if (value < 0)
value = 0;
data[height][width] = value;
}
private Image(String magicNumber, int height, int width, float max) {
this.magicNumber = magicNumber;
this.width = width;
this.height = height;
this.max = max;
data = new float[height][width];
}
...
public Image clone()
{
Image clone = new Image(getMagicNumber(), getHeight(), getWidth(), getMax());
for (int i = 0; i < getHeight(); i++)
{
for (int j = 0; j < getWidth(); j++)
{
clone.setPixel(getPixel(i, j), i, j);
}
}
return clone;
}
Und dann diese Klasse:
public class Filter {
public Filter() {
}
public Image linearFilter(Image image, float[][] kernel)
{
Image filtered = image.clone();
for (int i = 0; i < getHeight(); i++)
{ /* cannot resolve getHeight*/
...
}
return filtered;
}
}
Ich habe zwei Fragen:
1) Warum benötige ich keine Instanz erstellen der Klasse Bild. Hier kann ich bereits filtered.setPixels verwenden ...
2) Wie behebe ich das Problem mit "kann Methode nicht auflösen"?
Methoden nicht aufrufen, die nicht existieren. Vielleicht wollen Sie 'image.getHeight (...)' nennen? Schwer zu sagen, da wir nicht wissen, was dieser Code tun soll. Ist das Bild ein 'java.awt.Image'? –
(1) Sie _do_ erstellen eine Instanz von 'Image'. Was denkst du 'image.clone()'? (2) Wenn Sie eine Methode aufrufen, müssen Sie angeben, auf welchem Objekt Sie sie aufrufen. Hier möchten Sie wahrscheinlich dem Ratschlag von Herrn Hovercraft folgen und 'image.getHeight()' schreiben. –
@DawoodibnKareem, eine Klarstellung: Wenn es die 'java.awt.Image' Schnittstelle ist, gibt es keine' getHeight() 'Methode. Stattdessen müsste er die Methode 'getHeight (ImageObserver observer)' verwenden. –