Interface Exceptions

frpfsch

Neues Mitglied
Hallo an alle!

Ich versuche mich schon das ganze Wochenende an einer Aufgabe und komme einfach nicht weiter. Vielleicht kann mir ja jemand weiterhelfen.

Aufgabenstellung:
Gegeben ist das Interface ConvIf mit folgenden Methoden:

• Die Methode char convChar(char c) erhält ein Zeichen als Parameter übergeben. Die Methode wandelt Großbuchstaben in Kleinbuchstaben und liefert diese zurück. Die anderen Buchstaben werden unverändert zurückgegeben, wobei bei folgenden übergebenen Zeichen eine Exception erzeugt und aus der Methode herausgeworfen wird:

Ist das Zeichen c ein ”?”, wird eine QuMarkException geworfen.

Ist das Zeichen c ein ”.”, wird eine Exception geworfen.

• Die Methode int[] convChar2Str(String str) erhält als Parameter einen String str, der in ein gleich langes char-Array übertragen und zeichenwiese mit der Methode ”convChar(char c)” gewandelt wird.

Folgende Fehlerbehandlung, der von convChar geworfenen Fehler erfolgt:

QuMarkException An die entsprechende Stelle wird im Array ”x” eingetragen. Damit ist diese Exception behandelt und es wird mit der Konvertierung mit der nächsten stelle fortgesetzt.

Exception Tritt diese Exception an der ersten Stelle im String auf, wird diese Exception aus der Methode heraus weitergeworfen. Tritt diese Exception an einer anderen Stelle im String auf, wird die Konvertierung bei dieser Stelle beendet und das bisher ermittelte Ergebnis zurückgeliefert. Damit ist die Exception behandelt.

Ergänzen Sie die Klasse MyConv und ggf notwendige Klassen:


Java:
interface ConvIf{
	char convChar(char c) throws Exception, QuMarkException;
	char[] convChar2Str(String s) throws Exception;
}

class MyConv implements ConvIf {

}

Mein aktueller Stand:

Java:
interface ConvIf{
	char convChar(char c) throws Exception, QuMarkException;
	char[] convChar2Str(String s) throws Exception;
}

class QuMarkException extends Exception {
	public QuMarkException(){
		super("Keine Fragezeichen erlaubt.");
	}
}

class MyConv implements ConvIf {
	public char convChar(char c) throws Exception {
			if(c == '?')
				throw new QuMarkException();
			else if (c == '.')
				throw new Exception();
	
			return Character.toLowerCase(c);
		}
	public char[] convChar2Str(String str) throws Exception {
		char[] Char = new char[str.length()];
		for (int i=0; i<str.length(); i++) {
			convChar(Char[str.charAt(i)]);
		}
		return Char;
	}
	
}

public class SoSe14A4 {
	public static void main(String[] args) {
		char c = '?';
		String str;
	}
}


Viele Grüße,
Ferdi
 
Zuletzt bearbeitet:

frpfsch

Neues Mitglied
Hallo CptSocket,

ich bin mir sehr unsicher, ob mein bisheriger Ansatz tut, was er soll, der Aufgabenstellung entsprechend.

Und dann fehlt mir eben noch das Werfen der Fehler bzw. das eintragen ins Array, bei QuMarkException.

Grüße,
Ferdi
 

CptSocket

Aktives Mitglied
Hallo Ferdi

Beim erneuten Durchschauen des Codes habe ich einen kleinen Fehler entdeckt:
Java:
convChar(Char[str.charAt(i)]);
Das müsste wahrscheinlich so aussehen (dem Char-Array mit dem namen Char soll der konvertierte Wert zugewiesen werden):
Java:
Char[i] = convChar(str.charAt(i));

Ob der Code macht was er soll kannst du einfach prüfen wenn du die Methode mit ein paar Testdaten aufrufst. Was passiert z.b., wenn du der Methode convChar2Str() die folgenden Daten übergibst:
"Hallo Welt"
"Hallo Welt."
"Hallo Welt?"

Das erwartete Resultat müsste gemäss Aufgabe etwa so aussehen:
"hallo welt"
"hallo welt"
"hallo weltx"

Da das Exception-Handling noch nicht implementiert ist, wird nur der erste Test funktionieren, der zweite und dritte String wird einen Fehler auslösen.

Wenn der erste Test funktioniert, würde ich dir Empfehlen, mit der Behandlung von der QuMarkException weiterzumachen.


Freundliche Grüsse
CptSocket
 

Neue Themen


Oben