carookee - group communication for you
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





· 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
   Antworten     Neuer Beitrag    

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