einfache Methode mit Fehler den ich nicht finde

Der Code zum evtl kopieren und bearbeiten:


Java:
public class methodesumme {
    
    public static void main (String[] args) {
        System.out.println("Hier wird eine Methode für die Addition erstellt");
        public static int summe(int wert1,int wert2)
            {
            int summenwert=wert1 + wert2;
            return summenwert;
            System.out.println("Die Summe von" + wert1 + "und" + wert2 + "ist" + summenwert);
            }
        }
    }
 
nach einer return-Anweisung darf auf derselben Ebene keine weitere Anweisung stehen.

Methoden dürfen nicht innerhabl von anderen Methoden definiert werden.

Klassennamen sollte man großschreiben.
 
ok, dann hab ich das return gelöscht. Die Methode groß geschrieben. Aber Methoden dürfen doch verschachtelt werden (?)
Oder anders gefragt: was muss ich denn an der Art der Programmierung ändern damit es funktioniert?
 

Anhänge

  • Screenshot from 2023-01-20 19-53-08.png
    Screenshot from 2023-01-20 19-53-08.png
    208,8 KB · Aufrufe: 3
Die Methode muss innerhalb der Klasse, darf aber nicht innerhalb einer anderen Methode sein.
Java:
public class Methodesumme {
 
    public static void main (String[] args) {
        // code
    }

    public static int summe(int wert1,int wert2) {
        // code
    }
}

Das "return" war nicht so tragisch, der Code danach würde halt nie ausgeführt werden, weil die Methode vorher verlassen würde.
 
Die Methode groß geschrieben.
Da darauf hingewiesen wurde: Du hast den Namen der Variablen großgeschrieben. 🙂 Per Konvention gilt für Java:

Klassennamen werden in UpperCamelCase (Großbuchstabe am Anfang) geschrieben. Methoden- und Variablennamen werden in lowerCamelCase (Kleinbuchstabe am Anfang) geschrieben.

Es gibt noch die Regeln, dass Klassennamen i. d. R. Substantive sind und Methoden Verben wie add() oder doSomething().
 
Hi,

ich sehe 2 Problem-chen:
1) du definierst zwar die Methode "summe", rufst sie aber nicht auf (Dein main hat keine Anweisung), siehe meine Zeile 4
2) auch mein Compiler meckert, wenn eine Anweisung NACH dem return folgt. Die Zeile kann NIE ausgeführt werden.
als 3) sehe ich noch, dass Du etwas einfacher schreiben kannst, denn die lokale Variable "summenwert" ist nicht erforderlich. Du kannst die Berechnung direkt in der return-Anweisung mitgeben. Es macht allerdings Sinn, wenn Du einen breakpoint dort setzen willst, um dem Programmablauf auf die Finger zu schauen.

Java:
public class summen {
  public static void main(String args[]) {
    System.out.println("   - die Summe in einem Unterprogramm");
    System.out.println(summe(3,5));
  } 

// =====================================================

public static int summe(int wert1,int wert2) {
    // gibt Summe zweier INT Werte zurück
    return (wert1 + wert2);
    }

//-----------------------------------------------------
 
}
 
public class rechner {

public static void main (String[] args) {
public int Plus (int wert1, int wert2)
{
int ergebnis_plus=wert1+wert2;
System.out.print ("Die Summe ist" + ergebnis_plus);
}
public int Minus (int wert1 , int wert2)
{
int ergebis_minus=wert1 - wert2;
System.out.print ("Die Substraktion ist" + ergebnis_minus);
}
public int Mal (int wert1, int wert2)
{
int ergebnis_mal=wert1 * wert2;
System.out.print ("Die Multiplikation ist" + ergebnis_mal);
}
public int Durch (int wert1, int wert2)
{
int ergebnis_durch=wert1 / wert2;
System.out.print ("Die Division ist" + ergebnis_durch);
}

}
}
 
Die Methoden stehen immer noch INNERHALB der main-Methode!

Allen deinen Methoden (außer main()) fehlt die return-Anweisung. Wobei das schon möglich wäre, aber dann dürfen deine Methoden keinen Rückgabewert deklarieren.

Die Ausgabe sollte in main() und nicht in die einzelnen Methoden.

Der Klassenname sollte mit einem Großbuchstaben beginnen. Das ist kein Fehler, aber eine anerkannte Konvention, die dem Verständnis dient. Dementsprechend sollten Methodennamen mit einem Kleinbuchstaben beginnen.
 
"Die Ausgabe sollte in main() und nicht in die einzelnen Methoden."
Aber die Ausgabe unterscheidet sich doch von Methode zu Methode?
Ich habe bisher nicht gelernt das immer ein return gesetzt werden muss
 

Anhänge

  • Screenshot from 2023-01-21 11-00-08.png
    Screenshot from 2023-01-21 11-00-08.png
    204,3 KB · Aufrufe: 1
Ich habe bisher nicht gelernt das immer ein return gesetzt werden muss
Möchtest du Methoden schreiben, die einen Rückgabewert haben? Falls ja, dann benötigst du auch ein "return", falls nein, dann musst du die Methode ohne Rückgabewert deklarieren:

void add(int a, int b) // Methode ohne Rückgabewert => "void"

Im Gegensatz dazu deine Deklaration:

int add(int a, int b) // Rückgabewert ist ein "int"
 
Aber die Ausgabe unterscheidet sich doch von Methode zu Methode?
Dazu ist der Rückgabewert der Methode da, den du dir "merken" kannst.

Java:
public static void main(String[] args) {
    
    int ergebnis = add(1, 2); // speichert den Rückgabewert in der Variablen
    System.out.print ("Die Addition ist" + ergebnis); // und gibt die Variable aus
}

Du kannst den Rückgabewert auch direkt ausgeben, ohne ihn zwischenzuspeichern:
Java:
public static void main(String[] args) {
    
    System.out.print ("Die Addition ist" + add(1, 2)); // addieren und ausgeben
}
 
ok dank dir. Ich lerne noch. Mit dem return ist klar. Aber nochmal einen Fehler den ich nicht finde. Was gefällt ihm denn am minus nicht?
Code:
michi@localhost ~/java $ javac rechner.java
rechner.java:12: error: cannot find symbol
            return ergebnisminus;
                   ^
  symbol:   variable ergebnisminus
  location: class rechner
1 error


Java:
public class rechner { //Ich dachte es kommt immer als Erstes die main Methode
                public int Plus (int wert1, int wert2)
                        {
                        int ergebnis_plus=wert1+wert2;
                        //System.out.print ("Die Summe ist" + ergebnis_plus);
                        return ergebnis_plus;
                        }
                public int Minus (int wert1 , int wert2)
                        {
                        int ergebisminus=wert1-wert2;
                        //System.out.print ("Die Substraktion ist" + ergebnisminus);
                        return ergebnisminus;
                        }
                public int Mal (int wert1, int wert2)
                        {
                        int ergebnis_mal=wert1 * wert2;
                        //System.out.print ("Die Multiplikation ist" + ergebnis_mal);
                        return ergebnis_mal;
                        }
                public int Durch (int wert1, int wert2)
                        {
                        int ergebnis_durch=wert1 / wert2;
                        //System.out.print ("Die Division ist" + ergebnis_durch);
                        return ergebnis_durch;
                        }

        public static void main (String[] args) {
        System.out.println("Das sind alles Übungen. Bitte nicht so streng");
        }
}
 

Anhänge

  • Screenshot from 2023-01-21 11-50-55.png
    Screenshot from 2023-01-21 11-50-55.png
    196 KB · Aufrufe: 1
Die Reihenfolge der Methoden ist egal.

Schau dir an, wie du die Variable deklariert hast! Du hast einen Schreibfehler. So einfache Sachen kann man auch selbst gut finden.

Und schreib bitte endlich die Klasse groß und die Methoden klein. Sich etwas schlecht anzugewöhnen macht später nur Schwierigkeiten.
 
ok dann dank ich euch. Hab viel gelernt.
Was mich ärgert: ich habe doch 30 x nach einem Schreibfehler gesucht und Nix gefunden ...
Najut. Irgendwann kann Frau alles lernen 🙂
 

Anhänge

  • Screenshot from 2023-01-21 12-17-51.png
    Screenshot from 2023-01-21 12-17-51.png
    196,4 KB · Aufrufe: 2

Zurück
Oben