Supportnet / Forum / Anwendungen(Java,C++...)
Probs mit Java
Frage
Hallo habe folgende 2 Java-Aufgaben bis Fr. zu lösen und keine Ahnung:
1)Exceptionbehandlung:
Es wird kurz erleutert, daß es für die Methode division ( ... ) zwei mögliche
Expectionbehandlungen (ArithmeticException und MyException) geben kann,
die aber nicht näher erklärt werden. Es ist ein halbfertiges Programm gegeben,
welches zu vervollständigen ist. Die Anzahl der fehlenden Zeilen ist bekannt.
Der Quellcode ist gegeben und sieht so aus:
1 void ausgabe (int x, int y)
2 {
3
4 int div = division (x, y);
5 Ausgabe x / y
6
7
8
9
10 }
11
12 int division (int x, int y)
13 {
14 //
15 }
a) Wie kann eine Weiterleitung der Exception durch die Änderung der Signatur der
Methode division erfolgen ?
b) Wie erfolgt die Exception-Behandlung in der Methode ausgabe( ... ) ?
2)a)
Erstellen einer Klasse Kreis mit den Klassenattributen Radius (double) und int x, int y
(zur Speicherung des Mittelpunktes des Kreises). Es sind 2 Methoden Flaeche und
Umfang zu erstellen, die der Berechnung der Kreisfläche ( ) und des
Kreisumfangs ( ) dienen sollen. Die Formeln für die Flächen- und
Umfangsberechnung sind in der Klausur NICHT vorgegeben.
Weiterhin sind 2 Konstruktoren zu erstellen, ein Konstruktor „copy“ (in der Klausur ist
nicht erklärt, was dieser Konstruktor machen soll) und einen zweiten Konstruktor (Name
selber wählen, aber die Java-Richtlinien beachten (keine Sonderzeichen, keine führenden
Ziffern, _ am Anfang und im Namen ist erlaubt, keine Leerzeichen)). Der zweite
Konstruktor soll die Übergabe von Radius, x und y als Parameter realisieren.
Zuletzt soll noch eine Datenkapselung erfolgen und die Einführung eines Attributs,
welches die erzeugten Objekte zählt.
Es ist KEINE main-Methode zu erstellen, diese wird erst in Aufgabe 2 verlangt.
b)
Es soll eine Methode main ( ) erstellt werden, die wenigstens 2 Instanzen der Klasse
Kreis erzeugt, aber jeweils einen anderen Konstruktor je Instanz verwendet. Die
Speicherung der erzeugten Instanzen (Kreise) soll in einem Array erfolgen. Weiterhin
soll die Ausgabe von Objektnummer (n-te Instanz), der Fläche und des Umfangs
erfolgen.
Wer kann mir helfen. Bin für jden Hinweis dankbar!
Claudia
Antwort 1 von semi
>Die Anzahl der fehlenden Zeilen ist bekannt.
So viel zum Thema Praxisbezug in der Schule.
Die erste Aufgabe ist einfach nur schwachsinnig.
Sag Deinem Lehrer er braucht ein Schild :-)
ArithmeticException ist eine RuntimeExceoption,
die einfach weitergereicht wird.
zu 2)
Also, die Aufgabe kannst Du sicherlich. Fläche, Umfang (3 Klasse oder so)
Gruß,
Michael
So viel zum Thema Praxisbezug in der Schule.
Die erste Aufgabe ist einfach nur schwachsinnig.
Sag Deinem Lehrer er braucht ein Schild :-)
1 void ausgabe (int x, int y) throws MyException
2 {
3 try {
4 int div = division (x, y);
5 System.out.println(div);
6 }
7 catch(ArithmeticException e) {
8 throw new MyException(e);
9 }
10 }
11
12 int division (int x, int y)
13 {
14 return x/y;
15 }Änderung an der Signatur? Gegenüber von was?ArithmeticException ist eine RuntimeExceoption,
die einfach weitergereicht wird.
1 void ausgabe (int x, int y)
2 {
3
4 int div = division (x, y);
5 System.out.println(div);
6
7
8
9
10 }
11
12 int division (int x, int y)
13 {
14 return x/y;
15 }zu 2)
Also, die Aufgabe kannst Du sicherlich. Fläche, Umfang (3 Klasse oder so)
public class Kreis
{
private static int numInstances = 0;
double radius;
int x;
int y;
public Kreis(Kreis kreis)
{
this(kreis.radius, kreis.x, kreis.y);
}
public Kreis(double radius, int x, int y)
{
incNumInstances();
setRadius(radius);
setX(x);
setY(y);
}
private void incNumInstances()
{
synchronized(numInstances)
{
numInstances++;
}
}
public static int getNumInstances()
{
return numInstances;
}
public int getRadius()
{
return this.radius;
}
public void setRadius(double radius)
{
if(radius<=0)
throw IllegalArgumentException("Radius darf nicht kleiner 0 sein!");
this.radius = radius;
}
... weiter mit getX, setX, getY, setY, umfang, flaeche etc.
}Gruß,
Michael
Antwort 2 von semi
Kleine Korrektur.
Vergiss das mit dem synchronized, macht hier keinen Sinn und funzt auch nicht bei 'native' Typen.
Vergiss das mit dem synchronized, macht hier keinen Sinn und funzt auch nicht bei 'native' Typen.
private void incNumInstances()
{
numInstances++;
}Antwort 3 von Claudia24
DAnke, aber das werde ich meinem Lehrer nicht sagen weil ich durch die mdl. Prüfung will ;-)

