3 Stimmen

Ich brauche Hilfe bei einem Kompilierfehler in einem Java-Basisprogramm.

Ich bin ganz neu in Java. Ich habe ein Problem beim Kompilieren eines einfachen Java-Programms und versuche zu verstehen, warum. (Beachten Sie, dass die TextIO Klasse im Code wird im Buch, das ich studiere, verwendet, um den IO-Prozess zu vereinfachen, ich glaube nicht, dass das Problem dort liegt:

public class ProcessSales {
    public static void main(String[] args) {

        String      ln;
        String      tmp;
        int         i;
        int         noval;

        TextIO.readFile("sales.dat");

        while (TextIO.eof() == false){
            ln = TextIO.getln();
            for (i = 0; i < ln.length(); i++) {
                if (ln.charAt(i) == ':'){
                    tmp = ln.subString(i + 1);  
                }   
            } // end line for loop

            try {
                System.out.printf("%8.2f\n", Double(tmp.trim()));
            }
            catch (NumberFormatException e) {
                noval++;
            }
        } // end of file while loop

        System.out.printf("\nThere were a total of %d cities that didnt have data\n", noval); 

    } // end of main subroutine
} // end of ProcessSales class

Der Kompilierfehler, den ich erhalte, lautet wie folgt:

[seldon@PrimeRadiant Exercises]$ javac ProcessSales.java
ProcessSales.java:15: cannot find symbol
symbol  : method subString(int)
location: class java.lang.String
                    tmp = ln.subString(i + 1);  
                            ^
ProcessSales.java:20: cannot find symbol
symbol  : method Double(java.lang.String)
location: class ProcessSales
                System.out.printf("%8.2f\n", Double(tmp.trim()));
                                             ^
2 errors

Ich habe erklärt ln als String Objekt. Die Website subString Methode ist direkt aus dem Java-Api für eine String Gegenstand. Ich verstehe nicht, warum ich die Meldung cannot find symbol Kompilierfehler, insbesondere wenn die Signatur und der Ort der Methode direkt unter der Fehlermeldung aufgeführt werden.

Ich habe die Fragen als Hausaufgaben Da ich anhand eines Lehrbuchs arbeite, möchte ich das Problem verstehen und nicht eine pauschale Lösung finden. Es handelt sich jedoch um ein Selbststudium und (im Moment) nicht um einen Teil des eigentlichen Unterrichts.

8voto

Perception Punkte 78008

Das Tolle am Java-Compiler ist, dass er Ihnen eine Menge Informationen liefert, mit denen Sie feststellen können, wo in Ihrem Code Probleme bestehen. Für Sie liegt das erste Problem hier:

tmp = ln.subString(i + 1);

In diesem Fall haben Sie einen Buchstaben groß geschrieben, den Sie nicht hätten schreiben sollen. Es sollte lauten:

tmp = ln.substring(i + 1);

Wenn Sie eine Compiler-Ausgabe sehen, die besagt, dass ein Symbol nicht gefunden werden kann, liegt das daran, dass der Java-Compiler keine Methode finden konnte, die dem ausgegebenen Namen entspricht, entweder aufgrund eines Syntaxfehlers oder einer fehlenden Abhängigkeit. Für Ihr zweites Problem haben Sie den entsprechenden Code nicht angegeben, aber aus der Fehlermeldung kann ich ersehen, dass Ihnen die new Stichwort.

System.out.printf("%8.2f\n", Double(tmp.trim()));

Sollte sein

System.out.printf("%8.2f\n", new Double(tmp.trim()));

Wenn dies nicht Ihre erste Programmiersprache ist, würde ich Ihnen eine IDE wie Eclipse empfehlen, da sie Ihnen automatische Vervollständigung und Syntaxprüfung bietet. Es ist ein großartiges Werkzeug, um die APIs der Sprache schnell zu erlernen. Wenn Java jedoch Ihre erste Programmiersprache ist, sollten Sie ohne Anleitung weitermachen, denn die harten Schläge werden das Gelernte schneller festigen.

3voto

Nestor Punkte 31

Ich habe nichts davon überprüft, ich habe mir nur den Quelltext und die Fehlermeldungen angesehen.

Der erste Fehler scheint ein Fehler in der Groß- und Kleinschreibung zu sein. Die Java String-Klasse hat keine subString Methode hat sie eine substring Methode, beachten Sie das klein geschriebene s. Referenz

Der zweite Fehler könnte wahrscheinlich behoben werden, wenn Sie new Double o Double.valueof anstelle von Double . Das liegt daran, dass Sie wahrscheinlich versuchen, ein neues Double-Objekt zu konstruieren und mit new valueof Methode in der Klasse Double erledigen. Referenz

1voto

Florian Punkte 1075

In Java wird bei Methodennamen zwischen Groß- und Kleinschreibung unterschieden. Schauen Sie in der String-API-Spezifikation nach, ob die Groß- und Kleinschreibung korrekt ist.

0voto

sonesh Punkte 21

Was Ihren ersten Fehler betrifft, so haben Sie einen Tippfehler. Er sollte lauten ln.substring(i+1) pas ln.subString(i+1) . Bei allen Quelltexten in Java wird zwischen Groß- und Kleinschreibung unterschieden.

Was den zweiten Fehler betrifft, so müssen Sie die new Schlüsselwort, um das Double-Objekt zu instanziieren. Ohne new sucht der Compiler nicht nach dem Konstruktor, sondern nach einer Methode Double innerhalb Ihrer Klasse ProcessSales und kann sie nicht finden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X