Wiederholung von try-catch

chillerStudent

Bekanntes Mitglied
Hallo,
folgende Hausaufgabe:

ich muss eine Methode schreiben, die einen Zähler und einen Nenner liest. Da es verboten ist, durch null zu teilen, soll das programm wieder von vorne abfragen. Das sind drei Beispiele für die Ausgaben:
Bitte Zaehler eingeben: 3
Bitte Nenner eingeben: #+
Keine Zahl eingegeben


Bitte komplette Eingabe wiederholen
Bitte Zaehler eingeben: 4
Bitte Nenner eingeben: 5
Bitte Zaehler eingeben: 2
Bitte Nenner eingeben: 0
Division durch Null ist unzulaessig


Bitte komplette Eingabe wiederholen
Bitte Zaehler eingeben: 1
Bitte Nenner eingeben: 2
Bitte Zaehler eingeben: 3
Bitte Nenner eingeben: 4


Dazu habe ich die Methode Fraction geschrieben:

Java:
static Fraction inputFraction() throws NumberFormatException, IOException, WrongInputException, BadDenominatorException{
	  System.out.println("Bitte Zaehler eingeben: ");
	  BufferedReader z = new BufferedReader(new InputStreamReader(System.in));
	  int i;
	  try{
		  i = Integer.parseInt( z.readLine() );
	  }
	  catch(NumberFormatException e){
			  throw new WrongInputException("Keine Zahl eingegeben!");
	  }
	  System.out.println("Bitte Nenner eingeben: ");
	  BufferedReader n = new BufferedReader(new InputStreamReader(System.in));
	  int x;
	  try{
		 x = Integer.parseInt( n.readLine() );
	  }
	  catch(NumberFormatException e){
		  throw new WrongInputException("Keine Zahl eingegeben!");
	  }
	  
	 Fraction f = new Fraction(i, x);
	 return f;
  }

Ich muss die Ausnahmne des Typs WrongInputException in der Klasse Start.java so abfangen,
dass im Fehlerfall die erneute Eingabe beider Brüche gefordert wird. Main:

Java:
public static void main(String[] args) throws BadDenominatorException, NumberFormatException, IOException, WrongInputException{
	 /*
	try{  
		Fraction b1 = new Fraction(2, 3);
		Fraction b2 = new Fraction(1, 2);
		Fraction b3 = new Fraction(0, 4);
		Fraction b4 = new Fraction(5, 0);
	}
    catch(BadDenominatorException e){
    	System.out.println(e.getMessage());
    } 
*/
    try{
    	while(true){
    Fraction b5 = Fraction.inputFraction(); 
    Fraction b6 = Fraction.inputFraction();
    	}
    }
    catch(NumberFormatException e){
    	System.out.println(e.getMessage()+"Bitte komplette Eingabe wiederholen!");	
    }

Nun mein Frage: Wie schaffe ich es in der Main die Ausnahmen des Typs WrongInputException abzufangen und zu wiederholen?
 

chillerStudent

Bekanntes Mitglied
Java:
 while(true){
		 if(true){
    try{
    	Fraction b5 = Fraction.inputFraction();
    }
  
    catch(WrongInputException e){
    	System.out.println("sdf");	
    }
	  }else{
		  break;
	  }
	 }

So?

Als Ausgabe zeigt er mir immer Exception von dem Konstruktor ??!!

Der Konstruktor sieht so aus:
Java:
public Fraction(int enumerator, int denominator) throws BadDenominatorException{
	  this.enumerator=enumerator;
	  this.denominator=denominator;
	 
	 if(denominator==0){
		  throw new BadDenominatorException("Nenner 0 ist unzulässig!");
	 }
  }
 
Zuletzt bearbeitet:

The_S

Top Contributor
nein. So hast du ja eine Endlosschleife.

Java:
boolean abbruch = false;
while (!abbruch) {
  try {
    Fraction b5 = Fraction.inputFraction();
    abbruch = true;
  } catch (WrongInputException e) {
    e.printStackTrace();
  }
}
 

Neue Themen


Oben