Java Bild speichern

Status
Für weitere Antworten geschlossen.

SparkMonkay

Commander
Registriert
Feb. 2013
Beiträge
2.337
Moin, ich habe eine Frage.

Wie zum Geier funktioniert diese Funktion:
Code:
void save(String filename);

Ich verstehe nicht was daran nicht zu verstehen ist, aber ich bekomme permanent in meinem Programm die Fehlermeldung, die sich um diesen Befehl rankt.
Zuviel will ich nun auch nicht preis geben, denn ansonsten würde man meine Übungen für die Uni lösen und naja....

Also, nochmal.
Ich habe als Aufgabe bekommen mit Turtle einen Lieferwagen zu Zeichen, was auch schon erledigt ist.
Das Problem ist: Wie benutzt man diese Methode?
 
/home/student/Desktop/TEST/nr4.java:86: error: illegal start of expression
void save("Lieferwagen");
^
/home/student/Desktop/TEST/nr4.java:86: error: ';' expected
void save("Lieferwagen");
^
2 errors
[Finished in 0.9s]

Die Classe befindet sich im selben Ordner wir die Datei die ich kompilieren soll.
(Die StdDraw.class ist gemeint)
 
Hi,

und dein Code an der Stelle? Schreibst du das "void" mit dazu? Das hat da nichts zu suchen, wenn du nur die Funktion aufrufen möchtest...

Poste mal deinen Code an der Fehlerstelle und ein paar weiter oben und drunter...

VG,
Mad
 
Code:
//Am Anfgan erstellt, weil ich keinen Plan habe was in die Methode geschmissen werden soll
String Lieferwagen="Lieferwagen";
//2 Zeilen drüber
		a.right(90);
		a.forward(5);

		save("Lieferwagen");
	}
}
//Ende

und jetzt ohne void
/home/student/Desktop/TEST/nr4.java:86: error: cannot find symbol
save("Lieferwagen");
^
symbol: method save(String)
location: class nr4
1 error
[Finished in 1.0s]
 
Da die save() Methode scheinbar nicht statisch ist, kann sie natürlich nicht aufgerufen werden. In welcher Klasse ist die Methode denn implementiert? Wenn Sie nicht statisch ist, brauchst du ein instanziiertes Objekt dieser Klasse, um sie auf diesem Objekt aufrufen zu können.
 
Des weiteren wird dein String (Lieferwagen = "Lieferwagen") nicht verwendet, da du stattdessen der save-Methode einen neuen String übergibst.
 
SparkMonkay schrieb:
Code:
//Am Anfgan erstellt, weil ich keinen Plan habe was in die Methode geschmissen werden soll
String Lieferwagen="Lieferwagen";
//2 Zeilen drüber
		a.right(90);
		a.forward(5);

		save("Lieferwagen");
	}
}
//Ende

und jetzt ohne void
/home/student/Desktop/TEST/nr4.java:86: error: cannot find symbol
save("Lieferwagen");
^
symbol: method save(String)
location: class nr4
1 error
[Finished in 1.0s]

Kannst du mal die gesamten Inhalt deiner java-datei posten?

Weiter ist die definition die du im eröfnungspost geschrieben hast nur in Interfaces erlaubt.

"Cannot find Symbol" kommt wenn die Methode nicht vorhanden ist in der Klasse in der du gerade bist.
Du brauchst also eine Objektinstanze
Klasse k = new Klasse()
k.save("Lieferwagen")

oder wenn Statisch

Klasse.save("Lieferwagen").
 
Zuletzt bearbeitet:
Hat der TE überhaupt eine Methode geschrieben mit der Bezeichnung save?

du rufst nur die Methode auf, wenn die gar nicht vorhanden ist was soll dann da aufgerufen werden?

Poste mal deinen ganzen code.
 
ok, das mit dem gesamten Programm ist so ne Sache. Unsere Korrektoren sind recht krass was das jetzt angeht.
Naja, die Sache ist für mich verdammt Riskant...

@Hades, ist gegeben
ich poste mal den Inhalt der Moethode

Code:
 /*************************************************************************
    *  Save drawing to a file.
    *************************************************************************/

    /**
     * Save onscreen image to file - suffix must be png, jpg, or gif.
     * @param filename the name of the file with one of the required suffixes
     */
    public static void save(String filename) {
        File file = new File(filename);
        String suffix = filename.substring(filename.lastIndexOf('.') + 1);

        // png files
        if (suffix.toLowerCase().equals("png")) {
            try { ImageIO.write(onscreenImage, suffix, file); }
            catch (IOException e) { e.printStackTrace(); }
        }

        // need to change from ARGB to RGB for jpeg
        // reference: http://archives.java.sun.com/cgi-bin/wa?A2=ind0404&L=java2d-interest&D=0&P=2727
        else if (suffix.toLowerCase().equals("jpg")) {
            WritableRaster raster = onscreenImage.getRaster();
            WritableRaster newRaster;
            newRaster = raster.createWritableChild(0, 0, width, height, 0, 0, new int[] {0, 1, 2});
            DirectColorModel cm = (DirectColorModel) onscreenImage.getColorModel();
            DirectColorModel newCM = new DirectColorModel(cm.getPixelSize(),
                                                          cm.getRedMask(),
                                                          cm.getGreenMask(),
                                                          cm.getBlueMask());
            BufferedImage rgbBuffer = new BufferedImage(newCM, newRaster, false,  null);
            try { ImageIO.write(rgbBuffer, suffix, file); }
            catch (IOException e) { e.printStackTrace(); }
        }

        else {
            System.out.println("Invalid image file type: " + suffix);
        }
    }


    /**
     * This method cannot be called directly.
     */
    public void actionPerformed(ActionEvent e) {
        FileDialog chooser = new FileDialog(StdDraw.frame, "Use a .png or .jpg extension", FileDialog.SAVE);
        chooser.setVisible(true);
        String filename = chooser.getFile();
        if (filename != null) {
            StdDraw.save(chooser.getDirectory() + File.separator + chooser.getFile());
        }
    }

Ein Auszug aus der "Bibliothek" wo wir die Methode haben und noch eine weitere.
Die
 
Zuletzt bearbeitet:
Stimmt, möglicherweise ist es, wie in #8 geschrieben, nur ein Interface und du musst diese Methode selbst implementieren. Jedenfall musst du uns ein paar mehr Quelltextausschnitte geben, sonst können wir nur raten was da schief läuft.
 
Computerbase ist keine Anlaufstelle um sich die Hausaufgaben lösen zu lassen und wenn der TE, dann auch noch Angst hat mehr von seiner Aufgabe zu posten, dann kann ich hier nicht weiter offen lassen.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben