Home
/
JavaForum
/
Beginner
Infos
|
Features
|
Gold-Edition
|
Kundenservice
java
Übersicht
Forum
-
Beginner
-
Java allgemein
-
JDBC
-
JNI
-
Networking
-
Online-Ressourcen
-
Swing + AWT
-
XML
-
Meckerecke
Mitglieder
LOGIN
User oder E-Mail
Passwort
·
Passwort vergessen
·
Kostenlos anmelden
Information
Demo
Features
Im Vergleich
Anmeldung
SUCHE
Beiträge, Foren oder Verfasser finden:
Kundenservice
Impressum
Datenschutz
AGB
Status
3.768 User online
3 User eingeloggt
Beiträge
Beginner
Java allgemein
JDBC
JNI
Networking
Online-Ressourcen
Swing + AWT
XML
Meckerecke
Antworten
Neuer Beitrag
Gesamtdarstellung
Detaildarstellung
Einzeldarstellung
Threaddarstellung
Beitrag 269 von 2963 (9%)
Autor
DeaconFrost
Datum
08.11.05, 14:33
Betreff
Re: Java anfänger braucht dringend hilfe
(c) Folgende Zuweisungen werden vom Java-Compiler nicht akzeptiert. Was ist an ihnen
problematisch? Gebt an, ob und ggf. wie man die Akzeptanz des Compilers erreichen
kann:
i) ivalue1 = bvalue ;
ii) lvalue = dvalue ;
iii) fvalue = 2. ;
Ad i) Integer-Werten bzw. Gleitkommazahlen kann man einen boolean niemals zuweisen. Das verbietet die Sprachspezifikation von Java, damit Zahlenwerte und boolsche Ausdrücke nicht vermischt werden können (einige Programmierfehler in z.B. C/C++ rühren genau daher, dort ist das ja erlaubt). Möglich ist in Java nur folgendes:
if (bvalue == true) {
ivalue1 = 1;
} else {
ivalue1 = 0;
}
Ad ii) Laut Spezifikation: Umwandlungen von Zahlen, bei denen Information verloren gehen können, muss man explizit einen cast voranstellen. Grund: Dem Programmierer soll in diesen Fällen bewusst sein, dass Informationen verloren gehen (können). Im konkreten Fall geht ja der Teil nach dem Komma verloren (durch Abschneiden). Möglich ist also nur:
lvalue = (long) dvalue;
Es ist auch möglich, das Bitmuster einer Gleitkommazahl zu erhalten. Das ist jedoch nur für irgendwelche "Bitschiebereien" gedacht und hier wahrscheinlich nicht gefordert. Beispiel:
lvalue = new Double(dvalue).doubleToRawLongBits();
Ad iii) Das Literal "2." bezeichnet einen Wert vom Typ double, nicht von float! Daher verweigert der Compiler die Umwandlung ohne expliziten cast (Grund siehe ii). Es gibt nun 2 Möglichkeiten:
1.) Wenn du den Wert 2.0 vom Typ float zuweisen willst, dann musst du "f" bzw. "F" an das Literal anhängen. Also:
fValue = 2.F;
2.) Wenn du den Wert 2.0 vom Typ double zuweisen willst, dann ist ein expliziter Cast von Nöten, da ja der double-Wert auf einen float-Wert gekürzt werden muss (dabei geht durch Abschneiden der Nachkommastellen möglicherweise Information verloren => Java verlangt cast). Also:
fValue = (float) 2.;
Wahrscheinlich ist Möglichkeit 1 gewollt.
Hoffe das hilft dir weiter.
Liebe Grüße,
Deacon Frost
Diskussionsverlauf:
Java anfänger braucht dringend hilfe
Re: Java anfänger braucht dringend hilfe
Auf diesen Beitrag antworten
Neuen Beitrag verfassen
Impressum
·
Datenschutz
·
AGB
·
Infos
·
Presse
Ein modernes Forum:
teamturn.com