Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo Leute, ich habe ein Problem. Ich habe eine Übungsaufgabe zu Jaba von einem Buch nicht richtig hinbekommen und hab deshalb im Lösungsbuch nachgeschaut. Ich habe jetzt folgenden Lösungscode, den ich nicht richtig verstehe:
Code:
public static void main (String[] args) {
short i;
long b, m;
boolean neg;
do { // Schleife zur wiederholten Durchführung des Programmes
i = IOTools.readShort(" Dezimalzahl: ");
neg = (i < 0);
if (neg)
i = (short) -i;
b = 0;
m = 1;
while (i > 0) {
b = b + (i % 2) * m;
i = (short) (i / 2);
m = m * 10;
}
if (neg)
b = -b;
System.out.println("als Binaerzahl: " + b + "\n");
}
while (b != 0);
}
}
Das Programm soll eine Dezimalzahl in eine Binärzahl umwandeln.
Also, ganz am Anfang wird eine Dezimalzahl eingelesen, die in i (Datentyp short) gespeichert wird.
Was bedeutet die zweite Zeile in der Schleife? neg ist doch als boolean deklariert, wie kann dann so ein Ausdruck hintendran stehen? Ich dachte es geht nur true oder false?
Die dritte Zeile if (neg) prüft dann, ob i<0 und wenn ja, was bedeutet "i=(short) -i"?
Ich würde mich freuen wenn ihr mir helfen könntet.
(i < 0) ist ein Ausdruck der entweder true oder false zurückgibt,
denn die Frage 'ist i kleiner als 0?' kannst du in Deutsch auch nur mit ja oder nein beantworten
i= -i;
ist eine Zuweisung, der Variablen i wird ein neuer Wert zugewiesen, der sich hier zufällig unter anderem aus dem alten Wert von i ergibt,
das (short) ist nur ein Cast auf den richtigen Zahltyp
Also bedeutet i = (short) -i; ,dass i den Datentyp short zugewiesen bekommt und das linke i sozusagen den negativen Wert von i zugewiesen bekommt, oder?
Aber das auch nur, wenn i<0, oder?
Im unteren Teil des Codes steht:
Code:
if (neg)
b = -b;
Das bedeutet doch, dass wenn i<0, auch b eine andere andere Zahl bekommt, oder? Also nicht nur i, sondern auch b.
Also bedeutet i = (short) -i; ,dass i den Datentyp short zugewiesen bekommt und das linke i sozusagen den negativen Wert von i zugewiesen bekommt, oder?
Aber das auch nur, wenn i<0, oder?
Danke erstmal für die schnelle Antwort. Ok, das mit dem zuweisen hab ich jetzt verstanden. Vielen vielen Dank!
Hat der Rest denn gestimmt, was ich geschrieben habe? Also das mit den if Anweisungen?
worauf beziehst du dich? ich kann höchstens vermuten, du meinst den zweiten Teil deines zweiten Postings,
> Im unteren Teil des Codes steht: if (neg) b = -b;
also EINE weitere if-Anweisung (Singular )
und ich denke meine Antwort
> weitgehend korrekt
sollte das beantworten
wobei
> auch b eine andere andere Zahl bekommt, oder?
wieder etwas unglücklich klingt, denn boolean-Werte sind keine Zahlen (je nach Sichtweise, in Java jedenfalls nicht)