# Methode lässt sich nicht mehrmals aufrufen



## Sabine.Quast (30. Jun 2020)

Hallo,

Mit dem Nachfolgendem Beispiel will ich Strings abfangen was auch klappt, nur wenn ich mehrmals die gleiche Methode in selection aufrufe, springt es zufällig irgendwann auf den finnaly - Teil obwohl es immer eine Int Eingabe ist. In der aufrufenden Methode erzeuge ich jedes mal ein neues Objekt , was dann zufällig in anderen Methoden aufgerufen wird und irgendwann  gelöscht wird. 



```
boolean test = true;
            while(test) {
                try {
                int choice = scanner.nextInt();
            if (choice == 1) {                }
                    selection(choice);
                    oneself();
                test = false;

            } catch (InputMismatchException test) {
                System.out.println("Bitte gib eine Zahl zwischen 1 -4  ein.");
            
            scanner.nextLine();

                    test = true;

            } finally {
                        oneself();
            }
```

Lg, Sabine.


----------



## httpdigest (30. Jun 2020)

Sabine.Quast hat gesagt.:


> springt es zufällig irgendwann auf den finnaly - Teil obwohl es immer eine Int Eingabe ist


Und warum ist das ein Fehler? Der finally-Block wird IMMER ausgeführt. Egal, ob der try-Block normal oder abnormal (durch eine Exception) beendet wird.


----------



## Sabine.Quast (30. Jun 2020)

httpdigest hat gesagt.:


> Und warum ist das ein Fehler? Der finally-Block wird IMMER ausgeführt. Egal, ob der try-Block normal oder abnormal (durch eine Exception) beendet wird.


hmm, ich versteh aber nicht wieso mein Objekt spontan einfach nach dem x- lauf  nicht mehr erzeugt wird. Immerhin soll diese Methode nichts anderes außer das machen. Gibt es vlt eine ähnliche Exception die keine Probleme verursacht?


----------



## LimDul (30. Jun 2020)

Keine Ahnung, was du genau tust oder tun willst und was genau das Problem ist. Der Ablauf der hier geposteten Methoden ist wie folgt:

Eingabe ist int:

```
selection(choice); // Der Aufruf selection(choice);
oneself(); // Der Aufruf direkt darunter
oneself(); // Der Aufruf aus dem finaly block
```

Eingabe ist kein int:

```
oneself(); // Der Aufruf aus dem finaly block
// Dann wieder Eingabe erfassen
```

Punkte die aufallen:
- Es fehlt eine schließende Klammer
- Die If-Bedingung ist total banane, da in der absolut gar nix passiert.


----------



## TM69 (30. Jun 2020)

Zuerst poste mal deinen ganzen Code und nicht ausschnittsweise.
Dann

```
if (choice == 1) {                }
```
Was willst du damit bezwecken? Eine Iff Abfrage ohne auszuführenden Code, ist sinnlos
Von While fehlt die schliessende Klammer,

@LimDul war schneller


----------



## Sabine.Quast (30. Jun 2020)

Erstmal danke für eure Hilfsbereitschaft, ich hab erstmal stundenlang rumprobiert und den Code ohne richtig zu schauen kopiert.
Den ganzen Code zu senden wäre zuviel, weil das Objekt über mehre Klassen hin und her springt.
Ich hab es jetzt soweit geschafft das alle Objekte bis auf eins erzeugt werden. Jetzt heißt es den Code Schritt für Schritt ausführen um das Problem zu erkennen.


----------



## Sabine.Quast (30. Jun 2020)

Mein Problem ist, ich erstelle durch Zufall Objekte. Alle Objekte können problemlos durch Aufrufen der Methode erstellt werden bis auf eins, dass eine vererbte Klasse eines anderen Objekts ist. Wenn ich Versuche das Objekt in der Methode zu erzeugen kann es random passieren das alles vor dem Objekt ausgeführt wird und dann ist die Methode auch zuende. Das Problem habe ich nur nicht, wenn ich das Objekt statisch erzeuge jedoch ändern sich dann nie die Attribute


----------



## TM69 (30. Jun 2020)

Sabine.Quast hat gesagt.:


> Mein Problem ist, ich erstelle durch Zufall Objekte. Alle Objekte können problemlos durch Aufrufen der Methode erstellt werden bis auf eins, dass eine vererbte Klasse eines anderen Objekts ist. Wenn ich Versuche das Objekt in der Methode zu erzeugen kann es random passieren das alles vor dem Objekt ausgeführt wird und dann ist die Methode auch zuende. Das Problem habe ich nur nicht, wenn ich das Objekt statisch erzeuge jedoch ändern sich dann nie die Attribute


Dann poste doch mal deinen gesammten Code, dann kann dir hier sicherlich auch jemanden helfen. Aber ohne Hintergrundwissen wird es schwierig dir dabei zu helfen.


----------



## mihe7 (30. Jun 2020)

Sabine.Quast hat gesagt.:


> Den ganzen Code zu senden wäre zuviel,


Zippen und anhängen.


----------



## Sabine.Quast (1. Jul 2020)

Ich habe das Problem endlich gelöst. Es lag an einem Setter der String sein sollte aber void war. Der Setter sollte ein String überschreiben, mit void hat das zu 70% auch geklappt. Ich frag mich wieso dann das Objekt zufällig mal erzeugt wird und mal nicht, wenn was falsch ist sollte es doch gar nicht erst klappen, dann wüsste man auch von Anfang an ob das auch funktionieren wird.

 Den Code darf ich nicht vollständig posten da das Programm als Prüfung gilt.

Lg, Sabine


----------

