Programm neu starten nach Fehlerabfang

Samoht7891

Neues Mitglied
Hallo Leute.

Ich bin totaler Java Neuling und muss fürs Studium ein Programm in Eclipse schreiben, das aus einer Adress- und Datensammlung Daten auswertet. Ich komme gerade an einem Punkt nicht weiter.
Ich habe einen try, catch Block für die Fehlerabfrage eingebaut. Wird ein unerlaubte Eingabe erkannt, so gibt er mir eine Fehlermedung heraus und beendet das Programm mit System.exit.
Ich möchte aber gerne, dass er dem Benutzer dann die Mögichkeit gibt, seine Eingabe wieder neu zu beginnen. Habe gelesen, dass man das mit einer while-Schleife machen kann. Ich habe keine Ahnung wo ich die hin setzten muss und was sie beinhalten muss. Kann mir da jemand weiterhelfen? Hier mein Codeausschnitt:

Java:
public static int durchschnittsAlter() {

		try {
			
			int eingabe = IO.readInt("Bitte ein Geburtsjahr eingeben:");

			DateiInput leser = new DateiInput("Werte zur Übung 6.3.csv");

			
			String zeile = null;


			ArrayList<Integer> durchschnittsalter = new ArrayList<Integer>();

			
			while ((zeile = leser.leseZeile()) != null)

			{

				String[] adressFeld = zeile.split(";");

				
				int geburtsJahr = Integer.parseInt(adressFeld[4]);

				int alter = eingabe - geburtsJahr;

				
				
				if (alter <= 0) 
					
				
			
				else {
					
					durchschnittsalter.add(alter);
				}
			}

			int durchschnitt = 0;

			for (int a = 0; a < durchschnittsalter.size(); a++)
				
				durchschnitt = durchschnitt + durchschnittsalter.get(a);
			int mittelwert = durchschnitt / durchschnittsalter.size();
			IO.println("Das Durchschnittsalter aller Personen bezogen auf Ihre Eingabe "
					+ eingabe + " beträgt: " + mittelwert + " Jahre");

		}
		
		catch (IOException e) {

			// Ausgabe einer Fehlermeldung und Ende bei Dateifehler
			IO.println("Fehler beim lesen der Datei! "
					+ e.getLocalizedMessage());
			System.exit(1);

		}

		catch (NumberFormatException ex) {

			// Ausgabe einer Fehlermeldung und Ende bei Dateifehler
			IO.println("Fehler beim lesen der Datei!"
					+ ex.getLocalizedMessage());
			System.exit(1);

		}

		catch (InputMismatchException exy) {

			// Ausgabe einer Fehlermeldung und Ende bei Dateifehler
			IO.println("Nur ganze Zahlen eingeben");
			System.exit(1);

		}

		catch (ArithmeticException exyz) {

			// Ausgabe einer Fehlermeldung und Ende bei Dateifehler
			IO.println("Alle Personen sind juenger als Ihr eingegebenes Geburtsjahr  ");
			System.exit(1);

		}

		return 0;

	}

	public static void main(String[] args) {

		int ergebins = (int) durchschnittsAlter();
		IO.println(ergebins);

	}

Ich habe die Berechnung des Durchschnittsalters in eine neue Methode gesteckt. Allerdings muss unten immer ein return-Wert eingetragen werden. Führe ich das Programm in Eclipse jetzt aus, so steht unter dem was ausgegeben werden soll noch die 0 vom return-Wert. Das soll aber nicht da stehen.
Kann mir jemand helfen?
 
an sich must du nur zb einen button amchen der das Fenster auf .setvisible(false) setzt und danach die main neu aufruft

Java:
setVisible(false);
deineclasse.main(//...);
 
Zuletzt bearbeitet:
Danke für die schnelle Antwort. Aber damit kann ich leider nicht wirklich was anfangen. Ich bin totaler Neuling.
Wo muss ich das denn hin schreiben? Ich sollte sicherlich auch nicht Befehle verwenden die wir in der Vorlesung noch nicht hatten. Denke das ich das mit ner while-Schleife oder so lösen sollte.
 
Hallo!

Also die Antwort von TheSorm kannst du mal getrost ignorieren. Er geht bei seiner Antwort davon aus, dass der Benutzer Werte über eine graphische Oberfläche eingibt. Davon hab ich in deinem Beitrag kein Wort gelesen.

Ich kann dir im Augenblick nur soweit helfen:
System.exit darf für dein Vorhaben nicht aufgerufen werden - das beendet die komplette virtual maschine.

Es gibt viele mehr oder weniger elegante Möglichkeiten. Du kannst z.B System.exit(1) durch return -1 ersetzen und in der main-Methode diesen Wert auswerten:

Code:
public static void main(String[] args) {
 
        int ergebnis = -1;
        while(ergebnis < 0) {
           ergebnis = durchschnittsAlter();
        }
        IO.println(ergebnis);
 
    }

Alternativ könnte man System.exit entfernen, stattdessen die exception erneut werfen und in der main-Methode mit try-catch-Block erneut behandeln. Oder gleich das try-catch in main verlagern. Viele Wege führen nach Rom
 
ihr kennt ja mitlerweile meine dunkle aggressive art, aber ich muss hier wirklich mal ganz ernsthaft nachfragen

info-student und nicht in der lage selbst zu googlen ? oder sich mal n (e-)book reinzuziehen so in richtung : java basics ... ähm ... sorry ... but : :lol:

da könnte man echt nur zynisch drauf antworten : schlechte bewertung mehr als verdient :toll:
 

Neue Themen


Zurück
Oben