Missing Return Statement

Diskutiere Missing Return Statement im Java Basics - Anfänger-Themen Bereich.
J

Jiscona

Hallo,

ich habe ein Programm geschrieben, welches in einer Schleife return beinhaltet:
Code:
private JButton b_anweisung(String text, int x, int y) {
    JButton b_anweisung[] = new JButton[100];
        for (int i = 0;i < 100;++i) {
        b_anweisung[i].setBounds(600, hoehe, 200, 60);
        b_anweisung[i].setText("Erstelle Integer [Name]");
        b_anweisung[i].setMargin(new Insets(2, 2, 2, 2));
        
        b_anweisung[i].addMouseMotionListener(new MouseAdapter() {
            @Override
            public void mouseDragged(MouseEvent e) {
                Rectangle bounds = b_anweisung[i].getBounds();
                bounds.x += e.getX();
                bounds.y +=  e.getY();
                b_anweisung[i].setBounds(bounds);
            }
        });
       return b_anweisung; 
    }  // end of for
    
    }
Dann kommt allerdings als Fehlermeldung:
Code:
GUI2.java:51:5: error: missing return statement
    }
    ^
Und ich habe wirklich fast keine Ahnung über return und deswegen weiß ich nicht, wie ich das richtig machen soll. Könntet ihr mir vielleicht helfen?

VG und Danke im Voraus.
 
J

JustNobody

Deine return anweisung ist in der for schleife. Du willst doch nicht aus der for Schleife raus springen direkt beim ersten Durchauf.

Und meckern tut er, weil der Compiler auch an den Fall denkt, dass er nie in die for schleife rein geht ... dann würde es kein return Befehl geben ...

Und dann stimmt da auch der Rückgabetyp nicht. Du willst ein JButton zurück geben, aber im return gibst du ein JButton[] zurück.
 
T

temi

Wie müsste es denn dann aussehen?
Beschreibe doch mal in wenigen Worten, was du erreichen möchtest.

ich habe wirklich fast keine Ahnung über return
Mit return kannst du eine Methode verlassen und ggf. noch einen Rückgabewert mitgeben, z.B.
Java:
// Eine Methode mit einem int als Rückgabewert
public int add(int a, int b) {
    int sum = a + b;
    return sum; // hier wird ein int als Ergebnis zurückgegeben
}
 
T

temi

Ich möchte einfach b_anweisung als Feld speichern
Wo möchtest du denn b_anweisung speichern?

Aktuell erzeugst du in einer Methode ein lokales Array, welches 100 JButtons aufnehmen kann. Nachdem Irgendwann (irgendwann ist allerdings genau im ersten Schleifendurchlauf) innerhalb des Codes versuchst du die Methode zu verlassen und dieses Array als Rückgabewert zu verwenden. Was allerdings nicht funktionieren wird, da der Rückgabewert ja kein Array von JButtons ist, sondern ein einzelner JButton.

Beachte das das Array JButtons aufnehmen kann, dies in deinem Code aber noch nicht macht, da du erst mal nur ein leeres Array erzeugt hast.
 
J

Jiscona

Wenn ich es so mache:
Code:
  private JButton b_anweisung(int x, int y) {
    JButton b_anweisung[] = new JButton[100];
        for (int i = 0;i < 100;++i) {
        b_anweisung[i].setBounds(600, hoehe, 200, 60);
        b_anweisung[i].setMargin(new Insets(2, 2, 2, 2));
        b_anweisung[i] = new JButton();
      
        b_anweisung[i].addMouseMotionListener(new MouseAdapter() {
            @Override
            public void mouseDragged(MouseEvent e) {
                Rectangle bounds = b_anweisung[i].getBounds();
                bounds.x += e.getX();
                bounds.y +=  e.getY();
                b_anweisung[i].setBounds(bounds);
            }
        });
        
    }  // end of for
    
    }
Und dann:
Code:
cp.add(b_anweisung[zahl](100, 100));
Kommt als Fehlermeldung:
Code:
GUI2.java:133:39: error: ')' expected
              cp.add(b_anweisung[zahl](100, 100));
                                      ^
 
Zuletzt bearbeitet:
T

temi

Und dann:
Code:
cp.add(b_anweisung[zahl](100, 100));
Kommt als Fehlermeldung:
Code:
GUI2.java:133:39: error: ')' expected
              cp.add(b_anweisung[zahl](100, 100));
                                      ^
Was ist denn "cp"?

Was willst du damit erreichen, bzw. was soll die (100,100) bewirken?

Wenn "cp" eine Liste von JButtons ist, der du einen JButton hinzufügen willst dann müsste der Befehl: cp.add(b_anweisung[zahl]); lauten.

Edit, als Ergänzung: Der Code der Methode b_anweisung() ist komplett wirkungslos, denn beim Array b_anweisung (Ich würde entweder die Methode oder die Variable anders benennen) handelt es sich um eine lokale Variable innerhalb der Methode, die am Ende der Methode ihre Gültigkeit verliert.

Edit2: Ah, ich glaube zu verstehen. Du willst in der add() Methode die Methode b_anweisung() aufrufen und nicht das Array b_anweisung verwenden (siehe Bemerkung zur Namensgebung!!!). Eine Methode hat keinen Index der Aufruf wäre beispielsweise b_anweisung(100,100);.

Edit3: Generell muss ich aufgrund deiner Fragen und Probleme leider sagen, dass du das mit der GUI Programmierung erst mal bleiben lassen solltest. Dir fehlen offensichtlich noch Grundlagen. Erarbeite dir diese Grundlagen erst mal nur auf der Konsole und mach dir dein Leben nicht unnötig schwer. Nur ein Tipp von mir...
 
Zuletzt bearbeitet:
J

Jiscona

Edit3: Generell muss ich aufgrund deiner Fragen und Probleme leider sagen, dass du das mit der GUI Programmierung erst mal bleiben lassen solltest. Dir fehlen offensichtlich noch Grundlagen. Erarbeite dir diese Grundlagen erst mal nur auf der Konsole und mach dir dein Leben nicht unnötig schwer. Nur ein Tipp von mir...
Alles klar, das werde ich mir zu Herzen nehmen. Aber ich glaube, dass der Fehler an meinem Unwissen über Methoden liegt. Trotzdem Danke für den Tipp.
 
Thema: 

Missing Return Statement

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben