Seite 1 von 2

Info try catch finally

Verfasst: 06.08.2008 14:54
von eactor
public class ExceptionTest {
private static int[] feld = {3,6,2,0,-2,-1};
static public int berechne(int from,int to, int step){
int sum=10, i=0;
try{
for(i=from;i<=to;i+=step)
sum=sum+(sum/feld);
}catch(ArithmeticException e){
sum=sum+feld[i+1];
}catch(ArrayIndexOutOfBoundsException e){
sum++;
}
finally{
sum= sum*i/2;
}
return sum;
}
static public void main(String[] args)
{
System.out.println(""+berechne(1,4,1));
System.out.println(""+berechne(0,7,2));
}
}


dafür gibt mir mein Compiler
bereche(1,4,1) = 21;
bereche(0,7,2) = 33;

hoffe hab alles richtig abgeschrieben. Danke für Hinweise.

eactor

Re: Info try catch finally

Verfasst: 06.08.2008 15:03
von eactor
Multiple Choice

a)Eine Klasse kann mehr als ein Interface implementieren
b)Die NullPointException ist eine geprüfte Exception
c)Ein Konstrukter darf nicht protecded sein
d)Hohe Kohäsion ist gut)
e)In einer Arraylist kann ein Objekt nur einmal stehen
f)Jede Klasse muss die Methode toString() implementieren
g)ported Methoden der SUperklasse dürfen in Subklassen verwendet werden
h)Eine Methode darf nicht mehr als einmal mit dem gleichen Namen in einer Klasse existieren
i)Methoden der Superklasse können in der Subklasse überschrieben werden
j)Abstracte Klassen dürfen keine Implementierung enthalten

meine Antworten:
ja: a,d,g,h,i
nein:b,c,f,e,j

für Hinweise dankbar

Re: Info try catch finally

Verfasst: 06.08.2008 15:08
von Darnok
die zahlenwerte habe ich auch so.

beim multiple choice habe ich die h) mit nein beantwortet. methodennamen dürfen mehrmals vorkommen, wenn sie durch art und anzahl der übergabeparameter unterschieden werden können.

Re: Info try catch finally

Verfasst: 06.08.2008 15:23
von Alex
Hast du zu dem Try-Catch-Block eine Frage, oder willst du nur das Ergebnis bekannt geben?

Re: Info try catch finally

Verfasst: 06.08.2008 15:28
von tuscanylea
Bei Try Catch habe ich auch so gehabt :D, also 21 und 33 8-)

Re: Info try catch finally

Verfasst: 06.08.2008 15:29
von eactor
Naja wenn ich es richtig abgetippt habe ist das wohl das Ergebnis. Frage ist halt bloß ob ich mich beim eintippen vertan hab. Eclipse wird wohl richtig gerechnet haben.
Eactor

Re: Info try catch finally

Verfasst: 06.08.2008 16:15
von Hans Oberlander
Nunja der Eclipse Compiler ist intelligent und es ist ja von den Rechenregeln abhängig...

Re: Info try catch finally

Verfasst: 06.08.2008 19:01
von spinnn
hmm ich hab da irgendwie was anderes *mist*

14 und 48 sind meine ergebnisse ... pisse - aber vielleicht gibts auf den "rechenweg" ein paar punkte ...

Re: Info try catch finally

Verfasst: 06.08.2008 19:34
von MotoGP
spinnn hat geschrieben:hmm ich hab da irgendwie was anderes *mist*

14 und 48 sind meine ergebnisse ... pisse - aber vielleicht gibts auf den "rechenweg" ein paar punkte ...
Die Felder fangen bei 0 an zu zählen. Also wenn i=2 und Feld{-1,0,3,5,...usw} dann wäre es die dritte Stelle, also 3

Re: Info try catch finally

Verfasst: 06.08.2008 19:35
von bRaInLaG
hmm.. hab mal ganz unabhängig on hier die methode gebaut... nur die werte jetzt grad korrigiert... hab mir ni alles gemerkt und nix aufgeschrieben aber bei mir kommt auch 21 und 33 raus, und das hab ich auch in der klausur raus yuhuuuuuuuuuuu! :D :D :D :D :D

Re: Info try catch finally

Verfasst: 06.08.2008 20:28
von FruF
hab was ganz andres raus ...
Aua : billig aufgabe verkackt

Re: Info try catch finally

Verfasst: 06.08.2008 20:53
von spinnn
MotoGP hat geschrieben:
spinnn hat geschrieben:hmm ich hab da irgendwie was anderes *mist*

14 und 48 sind meine ergebnisse ... pisse - aber vielleicht gibts auf den "rechenweg" ein paar punkte ...
Die Felder fangen bei 0 an zu zählen. Also wenn i=2 und Feld{-1,0,3,5,...usw} dann wäre es die dritte Stelle, also 3
jop ich weis... hab ich eigentlich auch so gemacht... hmm - komisch ^^
kann ja mal bei gelegenheit meinen lösungsweg hier posten ...

edit: hab grad gemerkt das ich wohl doch den 0 und 1 stellen fehler gemacht hab - obwohl ichs gewusst hab .. argh shit ... scheiss stress immer wenn prüfung

Re: Info try catch finally

Verfasst: 06.08.2008 21:40
von tuscanylea
int[]feld ={3,6,2,0,-2,-1}
sum= 10;i=0;

(1,4,1)
try: i=1;i<=4;i=i+1;
i=1 sum=10+10/6=10+1=11
i=2 sum=11+11/2=11+5=16
i=3 sum=16+16/0 -->fehler bei i=3
catch sum=16+(-2)=14
finally sum=14*3/2=21
sum=21

(0,7,2)
try i=0;i<=7;i=i+2;
i=0 sum=10+10/3=10+3=13
i=2 sum=13+13/2=13+6=19
i=4 sum=19+19/(-2)=19-9=10
i=6--> Out Bound bei i=6
catch sum=10+1=11
finally sum=11*6/2=33
sum=33

MfG.

Re: Info try catch finally

Verfasst: 09.08.2008 14:10
von julchenchenchen
tuscanylea hat geschrieben:finally sum=14*3/2=21
sum=21
dachte, bei int wird aus dem 3/2 eine 1 und sum ist somit 14!? :?

Re: Info try catch finally

Verfasst: 09.08.2008 14:21
von Hans Oberlander
Wenn man den Term mal in ecplise reinschmeißt, bekommt man auch 21. Anscheinend wird intern die Operation erstmal normal im Float durchgeführt und dann dem int zugewiesen

Re: Info try catch finally

Verfasst: 09.08.2008 14:36
von bRaInLaG
Nein, aber man liest in unserer Sprache von links nach rechts, das heißt erst * und dann /

und 14*3=42 und 42/2=21 und da spielt es auch keine rolle, ob int float oder sonstwas

Re: Info try catch finally

Verfasst: 09.08.2008 15:08
von Hans Oberlander
In unserer Sprache, nicht aber zwangsweise in der Compilersprache

Re: Info try catch finally

Verfasst: 09.08.2008 15:41
von bRaInLaG
Hmm... na ich will ja echt Niemandem zu nahe treten, aber haben wir das nicht in der ersten Klasse gelernt, dass man neben Punkt vor Strich Rechnung auch von links nach rechts rechnet... (Klammern gehen natürlich auch vor), aber da waren ja soweit ich weiß keine gesetzt.

Re: Info try catch finally

Verfasst: 09.08.2008 15:59
von Hans Oberlander
Wir Menschen. Aber wer sagt das der Compiler sorum arbeitet? Vllt. hat er interne Vorrangslisten, wo mal und durch vor plus und minus kommt. Aber es kann auch durchaus sein das mal vor durch kommt etc. ;)

Re: Info try catch finally

Verfasst: 09.08.2008 16:04
von bRaInLaG
Naja der Compiler wird schon so programmiert sein, dass er die mathematischen Grundgesetze kennt (und anwendet) :D

Und wenn nicht, dann wärs schlimm

Re: Info try catch finally

Verfasst: 09.08.2008 16:07
von Hans Oberlander
Es kommt ja so oder so das gleiche raus, ob ich nun erst mal und dann durch rechne oder umgekehrt. Die Frage wäre jedoch, wenn er erst durch rechnet, ob er dann weil ja der Wert ein Int ist, statt 1,5 1 als Faktor hat ;)

Re: Info try catch finally

Verfasst: 09.08.2008 16:29
von bRaInLaG
Jaja ich weiß schon, aber "3/2" ist keine Variable, deswegen hats auch kein Typ...

nur, wenn das, was insgesamt rechts vom "=" steht, dann nachkommastellen hat, dann werden die abgehackt, weil sum eben vom Typ "int" ist...

Re: Info try catch finally

Verfasst: 09.08.2008 19:06
von eactor
Es wäre also festzuhalten. Der Compiler rechnet von rechts nach links wie wir eigentlich auch. Also erst mal dann durch.
Und wenn Klammern gewessen were hätte er erst gerundet und dann mal gerechnet.
Also zb 14 *(3/2) wäre dann 14!
eactor

Re: Info try catch finally

Verfasst: 09.08.2008 19:25
von bRaInLaG
stimmt...

Re: Info try catch finally

Verfasst: 10.08.2008 07:25
von MrGroover
Hans Oberlander hat geschrieben:Wenn man den Term mal in ecplise reinschmeißt, bekommt man auch 21. Anscheinend wird intern die Operation erstmal normal im Float durchgeführt und dann dem int zugewiesen
:lol: So ein Unfug... Galileo Computing :: Java ist auch eine Insel - 2.4 Ausdrücke, Operanden und Operatoren (Abschnitt 2.4.8 ist der interessierende, falls das mit dem Linkziel nicht klappt).