java kellerspeicher

teddy-exe

Mitglied
hi

wir haben eine programmieraufgabe...da fehlen mir aber noch ein paar zeilen code

wie kann ich folgenden code verstehen und anders schreiben?


Code:
return !bs.isEmpty()?( (Object[] )bs.top())[tb]:null;
diese zeile soll tb an die neuste kachel leiten...aber so ganz verstehen tu ichs nicht....
müsste eine if abfrage sein
wenn bs(ein dynamischer keller) nicht leer ist, passiert...?
falls der dynamische kellerspeicher leer ist, passiert null



Code:
((Object[])bs.top())[tb] = obj;

ist ja fast das gleiche....aber verstanden habe ich es nicht....




ebenso hier:
Code:
((Object[])bs.top())[++tb] = obj;
das soll ein neues objekt an der stelle von tb einsetzen




also diese codezeilen habe ich nicht richtig verstanden und würde sie auch ganz gerne umformulieren....

bei bedarf pn´ne ich auch mehr code
 
T

Tomate_Salat

Gast
Java:
return a?b:c;
// ist das selbe wie
if(a) {
   return b;
} else {
   return c;
}

Das nennt sich im übrigen "ternärer Operator"
 

nrg

Top Contributor
Code:
return !bs.isEmpty()?( (Object[] )bs.top())[tb]:null;

ist das gleiche wie:
Java:
if (!bs.isEmpty()) {
     return ((Object[])bs.top())[tb];
} else {
     return null;
}
siehe auch: ternärer Operator und casting.

Code:
((Object[])bs.top())[tb] = obj;
castet bs.top() in ein Object-Array und setzt in den index tb das Object obj.

Code:
((Object[])bs.top())[++tb] = obj;
castet bs.top() in ein Object-Array, inkrementiert (vor dem setzten) tb um 1 und setzt an diesen index das Object obj.
 

teddy-exe

Mitglied
Code:
return !bs.isEmpty()?( (Object[] )bs.top())[tb]:null;

ist das gleiche wie:
Java:
if (!bs.isEmpty()) {
     return ((Object[])bs.top())[tb];
} else {
     return null;
}
siehe auch: ternärer Operator und casting.

Code:
((Object[])bs.top())[tb] = obj;
castet bs.top() in ein Object-Array und setzt in den index tb das Object obj.

Code:
((Object[])bs.top())[++tb] = obj;
castet bs.top() in ein Object-Array, inkrementiert (vor dem setzten) tb um 1 und setzt an diesen index das Object obj.

zu 1. kommt mir bekannt vor....aber dass das auch bei einer returnanweisung geht, wusste ich nicht

zu 2. als index ein object? mir auch neu....oh man, ich muss noch einiges machen -,-

zu 3. ist ja ähnlich dem 2.
 
T

Tomate_Salat

Gast
zu 1. kommt mir bekannt vor....aber dass das auch bei einer returnanweisung geht, wusste ich nicht

Hat mit der return-anweisung nicht viel zu tun. War jz nur in dem Beispiel so.

Java:
String irgendwas=bedingung ? "wahr" : "falsch";
//wäre hier gleich wie:
String irgendwas;

if(bedingung) {
    irgendwas="wahr";
} else {
   irgendwas="falsch";
}

ginge zum Beispiel auch.

zu 2. als index ein object? mir auch neu....oh man, ich muss noch einiges machen -,-
tb ist hier wohl ein Integer:
Java:
int tb=42;
somit kannst du das als Index verwenden.

zu 3. ist ja ähnlich dem 2.
Hier geht es eben um die incrementation. Beispiel:
Java:
String[] werte={"a","b"};
int index1=0;
int index2=0;
System.out.println(werte[index1++]); // gibt a aus;
System.out.println(werte[++index2]); // gibt b aus, weil zuerst incrementiert wird
 

teddy-exe

Mitglied
Hat mit der return-anweisung nicht viel zu tun. War jz nur in dem Beispiel so.

Java:
String irgendwas=bedingung ? "wahr" : "falsch";
//wäre hier gleich wie:
String irgendwas;

if(bedingung) {
    irgendwas="wahr";
} else {
   irgendwas="falsch";
}

ginge zum Beispiel auch.

stimmt..ich habe völlig falsch gedacht...

tb ist hier wohl ein Integer:
Java:
int tb=42;
somit kannst du das als Index verwenden.

jup tb ist ein int, was die oberste kachel eines knotens definiert.

Hier geht es eben um die incrementation. Beispiel:
Java:
String[] werte={"a","b"};
int index1=0;
int index2=0;
System.out.println(werte[index1++]); // gibt a aus;
System.out.println(werte[++index2]); // gibt b aus, weil zuerst incrementiert wird

kann man eigentlich

((Object[])bs.top())[tb] = obj;


etwas anders schreiben?
 

Neue Themen


Oben