Airi: Java catch-try

Beitrag lesen

class fehler extends Exception {			// Klass definieren für Exception ungueltigeZahlen  
	public fehler() {}  
	public fehler(String meldung){  
		super(meldung);  
	}  
}  
	  
public class Aufgabe1  
{  
	  
	/* global members */  
	/******************/  
	/** Fehleranzeige beim Konvertieren zu Integerwerten */  
	static final int ERR_INT_BAD_VALUE = -2147483647;  
	  
	/** Fehleranzeige beim Konvertieren zu Doublewerten */  
	static final double ERR_DOUBLE_BAD_VALUE = -9.99e-99;  
	  
	/** Eingabestream, welcher durch die statische Eingabemethoden verwendet wird */  
	static BufferedReader 		din;		  
	  
	/************************************************************************************/  
	/**  
	* 	Diese Funktion eröffnet den Eingabekanal vom aktuellen Fenster, von der Tastatur  
	*	Der Handle wird statisch in der Klasse abgelegt  
	*/  
	static void OpenInput()  
	{  
		din = new BufferedReader(new InputStreamReader(System.in));  
	}  
	  
	/************************************************************************************/  
	/**  
	* 	Liest eine String - Variable vom Eingabe - Stream und gibt sie zurück  
	*	@return		eingelesener String  
	*/  
	static String	ReadString()  
	{  
		String		a="";  
		  
	  
		try {  
			a = din.readLine();  
		} catch (IOException e1) {  
			System.out.print ("Ungueltige Eingabe!!\n");  
		}  
		  
		return (a);  
	}  
	  
	/************************************************************************************/  
	/**  
	* 	Liest eine Integer - Variable vom Eingabe - Stream und gibt sie zurück  
	*	@return		eingelesener Integerwert oder ERR_INT_BAD_VALUE  
	*/  
	static int	ReadInt()  
	{  
		int		a=ERR_INT_BAD_VALUE;  
		  
		  
		try {  
			a = Integer.parseInt(din.readLine());  
		} catch (IOException e1) {  
			System.out.print ("Ungueltige Eingabe!!\n");  
		} catch (NumberFormatException e2){  
			System.out.print ("Ungueltige Eingabe!!\n");  
		}  
		  
		return (a);  
	}  
	  
	/************************************************************************************/  
	/**  
	* 	Liest eine Double - Variable vom Eingabe - Stream und gibt sie zurück  
	*	@return		eingelesener Doublewert oder ERR_DOUBLE_BAD_VALUE  
	*/  
	static double	ReadDouble()  
	{  
		double		a=ERR_DOUBLE_BAD_VALUE;  
		  
		  
		try {  
			a = Double.parseDouble(din.readLine());  
		} catch (IOException e1) {  
			System.out.print ("Ungueltige Eingabe!!\n");  
		} catch (NumberFormatException e2){  
			System.out.print ("Ungueltige Eingabe!!\n");  
		}  
		  
		return (a);  
	}  
	  
	static int StringToInt(String s) {  
		int x;  
  
		try {  
		x = Integer.parseInt(s);		//buildin function verwenden  
		} catch (Exception e) {  
		x = ERR_INT_BAD_VALUE;  
		}  
		return (x);  
	}//StringToInt  
	  
	  static double rechnung (double a, double b, double c, double res)  throws fehler 	//Funktion  
	{  
		if(c== 0 || (a-b)<0){  
			throw new fehler();  
		}else{  
			res=(Math.sqrt(a-b))/c;	  
			}return(res);  
  
	}  
	  
	static String funktion1 (String a)  
	{  
		System.out.println("bitte zahl a eingeben");						//Ausgabe  
		a=ReadString();											//Wert in Variable speichern  
		  
		return(a);  
  
	}  
	  
	static String funktion2 (String b)  
	{  
		System.out.println("bitte zahl b eingeben");						//Ausgabe  
		b=ReadString();											//Wert in Variable speichern  
		  
		return(b);  
  
	}  
	  
	static String funktion3 (String c)  
	{  
		System.out.println("bitte zahl c eingeben");						//Ausgabe  
		c=ReadString();											//Wert in Variable speichern  
		  
		return(c);  
  
	}  
	  
	  
		public static void main (String [] args) throws Exception {  
			  
			OpenInput();  
			  
			String a="a";  
			String b="b";															//Variable deklarieren  
			String c="c";			  
			double zahla;  
			double zahlb;  
			double zahlc;  
			double res=0;  
			String fun1;  
			String fun2;  
			String fun3;  
			  
			  
			  
			do{  
				  
				fun1=funktion1(a);													//Wert in Variable speichern  
				  
				if(fun1.equals("bye")){													//if-schleife, fals bye eigegeben wurde das programm beenden  
					System.out.println("Das Programm wurde beendet");							//Ausgabe  
				}else{  
					fun2=funktion2(b);  
					fun3=funktion3(c);  
					  
					try{  
						zahla=Double.parseDouble(a);  
						zahlb=Double.parseDouble(b);  
						zahlc=Double.parseDouble(c);  
						res=rechnung (zahla, zahlb, zahlc, res);  
						System.out.println(res);  
					}  
							  
					catch(fehler e1){  
						System.out.println("Ungültige Texteingabe");	  
					}  
								  
					catch(NumberFormatException e1){  
						System.out.println("Ungültige Zahleneingabe");  
					}  
				}  
			}while(!fun1.equals("bye"));  
		}  
	}  
	  
	

das ist mein programm und ich will dass wenn ich in den 3 variablen TEXT eingebe das die fehlermeldung kommt UNGÜLTIGE TEXTEINGABE aber es funktioniert nicht es kommt imme UNGÜLTIGE ZAHLENEINGABE wieso? wo liegt der fehler?

danke