Ausnahmen und Fehler

Hallo,

die beschriebenen Kritikpunkte sind wohl richtig.

erstmal zum 1. Punkt:
ändere die Methode beschleunigungen
- prüfen, ob geschwindigkeit-aenderung negativ ist, dann NichtMoeglichException werfen
die Logik ist wie bei setGeschwindigkeit
- lösche Methode setGeschwindigkeit

Hab gerade wenig Zeit, schaue später nochmal weiter.
Kannst ja erstmal Punkt 1 machen.

edit: Rechtschreibfehler beseitigt
 
Zuletzt bearbeitet:
Punkt 1 korrekt so?


Code:
public class Fahrzeug {
	private int geschwindigkeit;
	
	public Fahrzeug(int geschwindigkeit) throws FalscherWertException{ 
	if(geschwindigkeit < 0){ 	 
		throw new FalscherWertException("Geschwindigkeit ist negativ");//gibt es Ausnahmeregel FalscherWertException
	} else
   {
	  this.geschwindigkeit = geschwindigkeit;
   }
	}
	
	public int getGeschwindigkeit() {
 return geschwindigkeit;
	}
	
/*	public void setGeschwindigkeit(int neueGeschwindigkeit) throws NichtMoeglichException{
	if (neueGeschwindigkeit < 0){
	  throw new NichtMoeglichException("Die neue Geschwindigkeit ist negativ!");
	} else {
		this.geschwindigkeit = neueGeschwindigkeit;
	}
   } */
	// negative Beschleunigungen verringern die Geschwindigkeit
	public void beschleunigen(int aenderung, int neueGeschwindigkeit) throws NichtMoeglichException{
	if (neueGeschwindigkeit < 0) {
 throw new NichtMoeglichException("Die Geschwindigkeit wird negativ!");
 } else {   
   this.geschwindigkeit = neueGeschwindigkeit;
   }geschwindigkeit += aenderung;
	}
}
 
Hallo,

ich würde es so machen:
Code:
// negative Beschleunigungen verringern die Geschwindigkeit
   public void beschleunigen(int aenderung)
   {
   	if (geschwindigkeit + aenderung < 0)
   		throw new NichtMoeglichException("Die neue Geschwindigkeit ist negativ!");
   	else 
   		geschwindigkeit += aenderung;
   }
 
also letztendlich soll es dann so aussehen


Code:
// negative Beschleunigungen verringern die Geschwindigkeit
public void beschleunigen(int aenderung)throws NichtMoeglichException{
if (geschwindigkeit + aenderung < 0)
	 throw new NichtMoeglichException("Die neue Geschwindigkeit ist negativ!");
	else 
	 geschwindigkeit += aenderung;
}
}

Wenn das so richtig ist, muss ich noch test ändern, dass ich die exception abfange und der Durchlauf weitergeht. Das passiert dann nach dem try Teil im Catch teil oder?

Code:
public class FahrzeugTester {
	private static void test(int start) {
		int[] aenderungen = { 30, 50, -90, 30, -80 };
		try {
			Fahrzeug wagen = new Fahrzeug(start);
			for (int i = 0; i < aenderungen.length; i++) {
				System.out.println("Aendern der Geschwindigkeit um "
						+ aenderungen[i]);
				wagen.beschleunigen(aenderungen[i]);
				System.out.println("Aktuelle Geschwindigkeit: "  
						+ wagen.getGeschwindigkeit());
			}
 	   } catch (FalscherWertException fwe) {
			// Hier kann man jetzt auf den Fehler reagieren zum Beispeil:
			System.out.println("Es wurde eine negative Geschwindigkeit eingeben");
			// Man kann auch die Fehlermessage ausgeben lassen sollte 
			// aber nur für Debug zwecke genutzt werden
			// System.err.println(fwe);
		}
	}
 
	public static void main(String[] args) {
		int[] startwerte = { 0, 10, -20, 200 };
		for (int i = 0; i < startwerte.length; i++) {
			System.out.println("Beginn des Tests mit Startgeschwindigkeit "
					+ startwerte[i]);
			test(startwerte[i]);
			System.out.println("Test mit Startgeschwindigkeit "
					+ startwerte[i] + " beendet.");
		}
	}
}
 
Zuletzt bearbeitet:
Hallo,

so sollte es richtig sein:
Code:
public class FahrzeugTester {
   	private static void test(int start) throws FalscherWertException
   	{
   		int[] aenderungen = { 30, 50, -90, 30, -80 };
 			try	{ Fahrzeug wagen = new Fahrzeug(start); 
 				for (int i = 0; i < aenderungen.length; i++) {
 		 	System.out.println("Aendern der Geschwindigkeit um " + aenderungen[i]);
 	 		 try	{ wagen.beschleunigen(aenderungen[i]); } 
 		 	catch (NichtMoeglichException fwe) { System.err.println(fwe);	}
 		 	System.out.println("Aktuelle Geschwindigkeit: " + wagen.getGeschwindigkeit());
   				}
 		} catch (NichtMoeglichException fwe) { System.err.println(fwe);	}
   		}
    
   	public static void main(String[] args) {
   		int[] startwerte = { 0, 10, -20, 200 };
   		for (int i = 0; i < startwerte.length; i++) {
 			System.out.println("Beginn des Tests mit Startgeschwindigkeit "
 					+ startwerte[i]);
   			try
   			{
   				test(startwerte[i]);
   			}  catch (FalscherWertException fwe) {
 					System.err.println(fwe);
   			}
   			System.out.println("Test mit Startgeschwindigkeit "
 					+ startwerte[i] + " beendet.");
   		}
   	}}
Code:
public class Fahrzeug 
    {
    	private int geschwindigkeit;
    	
    	public Fahrzeug(int geschwindigkeit) throws NichtMoeglichException 
    	{ 
    		if(geschwindigkeit < 0) 	 
 			throw new NichtMoeglichException("Start-Geschwindigkeit ist negativ");
    		else
    			this.geschwindigkeit = geschwindigkeit;
    	}
    	
    	public int getGeschwindigkeit() { return geschwindigkeit; }
    	
    //	 negative Beschleunigungen verringern die Geschwindigkeit
    	public void beschleunigen(int aenderung) throws NichtMoeglichException
    	{
    		if (geschwindigkeit + aenderung < 0)
 			throw new NichtMoeglichException("Die neue Geschwindigkeit ist negativ!");
    		else 
    			geschwindigkeit += aenderung;
    	}
    }
Code:
//Klasse NichtMoeglichException erstellen 
   public class NichtMoeglichException extends Exception	
   { 
   	//Konstruktor FalscherWertException generieren
   	public NichtMoeglichException(String ErrorMessage) { super(ErrorMessage); }
   	public NichtMoeglichException(){}
   }
Code:
//Klasse FalscherWertException erstellen
    public class FalscherWertException extends Exception 
    { 
    	//  Konstruktor FalscherWertException generieren
    	public FalscherWertException( String ErrorMessage ) { super(ErrorMessage); }
    	public FalscherWertException(){}
    }
Code:
Beginn des Tests mit Startgeschwindigkeit 0
   Aendern der Geschwindigkeit um 30
   Aktuelle Geschwindigkeit: 30
   Aendern der Geschwindigkeit um 50
   Aktuelle Geschwindigkeit: 80
   Aendern der Geschwindigkeit um -90
   test.NichtMoeglichException: Die neue Geschwindigkeit ist negativ!
   Aktuelle Geschwindigkeit: 80
   Aendern der Geschwindigkeit um 30
   Aktuelle Geschwindigkeit: 110
   Aendern der Geschwindigkeit um -80
   Aktuelle Geschwindigkeit: 30
   Test mit Startgeschwindigkeit 0 beendet.
   Beginn des Tests mit Startgeschwindigkeit 10
   Aendern der Geschwindigkeit um 30
   Aktuelle Geschwindigkeit: 40
   Aendern der Geschwindigkeit um 50
   Aktuelle Geschwindigkeit: 90
   Aendern der Geschwindigkeit um -90
   Aktuelle Geschwindigkeit: 0
   Aendern der Geschwindigkeit um 30
   Aktuelle Geschwindigkeit: 30
   Aendern der Geschwindigkeit um -80
   test.NichtMoeglichException: Die neue Geschwindigkeit ist negativ!
   Aktuelle Geschwindigkeit: 30
   Test mit Startgeschwindigkeit 10 beendet.
   Beginn des Tests mit Startgeschwindigkeit -20
   test.NichtMoeglichException: Start-Geschwindigkeit ist negativ
   Test mit Startgeschwindigkeit -20 beendet.
   Beginn des Tests mit Startgeschwindigkeit 200
   Aendern der Geschwindigkeit um 30
   Aktuelle Geschwindigkeit: 230
   Aendern der Geschwindigkeit um 50
   Aktuelle Geschwindigkeit: 280
   Aendern der Geschwindigkeit um -90
   Aktuelle Geschwindigkeit: 190
   Aendern der Geschwindigkeit um 30
   Aktuelle Geschwindigkeit: 220
   Aendern der Geschwindigkeit um -80
   Aktuelle Geschwindigkeit: 140
   Test mit Startgeschwindigkeit 200 beendet.
 
Zurück