SaPaul Geschrieben 6. Juni 2006 Geschrieben 6. Juni 2006 Ich sitze hier an einer Aufgabe aus meiner Info-Probeklausur und komme einfach nicht auf die Lösung. Vielleicht kann mir ja jemand weiterhelfen. Die Aufgabe lautet folgendermaßen: Schreiben Sie eine Klassen-Methode fillArr, die unter Verwendung des Aufrufs T.readZahl() von Tastatur gelesene Float-Werte in dem als Parameter übernommenen Array arrFloat in Indexfolge ablegt, solange nicht [durch Strg z] der Wert null erzeugt wurde [und der Array nicht voll ist]. Zurückgegeben wird als int-Wert der Füll- stand des Array [Anzahl der erfassten Float-Werte]. Mein Lösungsansatz: static int fillArr(float[] arrFloat, int arrIndex) { for (float zahl = 0F; zahl != null && arrIndex < arrFloat.length; zahl = t.readZahl()) {arrIndex++; arrFloat[arrIndex] = zahl; } return arrIndex; } Wenn ich die Aufgabe richtig verstanden habe, kann man mit Strg+Z bei der Eingabe ein null erzwingen. Aber wie kriege ich dann heraus, dass die Float-Variable diesen Wert hat? Bei meiner Lösung bekomme ich von Eclipse eine Fehlermeldung, dass der Vergleich zahl != null nicht erlaubt ist (Die genaue Fehlermeldung kann ich euch jetzt nicht mitgeben, weil ich hier kein Eclipse und zuhause im Mom kein Inet habe). Oder habe ich das mit Strg+Z falsch verstanden? Bin für jeden Tipp dankbar. Zitieren
etreu Geschrieben 6. Juni 2006 Geschrieben 6. Juni 2006 Wird der primitive Datentyp float oder die Klasse Float verwendet? Das zweite kannst du auf Null testen, das andere leider nicht. Zitieren
kingofbrain Geschrieben 6. Juni 2006 Geschrieben 6. Juni 2006 Und noch als Ergänzung, wie Du zu einem Objekt kommst. Float f = new Float(primitiveFloat); Peter Zitieren
SaPaul Geschrieben 6. Juni 2006 Autor Geschrieben 6. Juni 2006 Ich hab mir jetzt mal die Klasse Float in der API angeschaut. Ich bin mit Java und der API nicht so vertraut, weil ich (leider) nur im Studium Java programmiere, daher verstehe ich eine Sache nicht so wirklich: Im Text steht "An object of type Float contains a single field whose type is float." Darunter in der Field Summary sind aber ganz viele Felder. Für mich als Laie irgendwie verwirrend... Außerdem finde ich den Namen des Feldes nicht, das den primitiven Float enthält. Den Namen brauche ich doch, um auf dieses Feld zugreifen zu können, oder kann ich einfach mit Float zahl = new Float(1F); zahl = 2F; neue Werte zuweisen? Lacht nicht, ich bin ja lernwillig Zitieren
bigredeyes Geschrieben 6. Juni 2006 Geschrieben 6. Juni 2006 dein array sollte vom typ Float (nicht float) sein. Float f = 2F; float flo = f; funktioniert als zuweisung. die statischen felder sind die maximalwerte die ein Float annehmen kann und noch ein paar andere spielereien. Zitieren
kingofbrain Geschrieben 6. Juni 2006 Geschrieben 6. Juni 2006 Servus, auf das Feld mit dem Inhalt willst Du nicht direkt zugreifen, aber Du kannst Dir den Inhalt über longValue() besorgen. Schreiben tust Du entweder über den Konstruktor oder über static Float valueOf(float f). Die Felder, die Du siehst, sind im Endeffekt nur Konstanten mit Werten, die man immer wieder mal braucht, aber keine klassische Eigenschaft eines Float-Objekts, wie eben der Inhalt. In der API-Doc siehst Du das Feld übrigens nicht, weil die API-Doc normalerweise nur die public und protected (also die (halb)öffentlichen) Schnittstellen dokumentiert. Das Feld wird aller Wahrscheinlichkeit nach private sein. Denk dabei an einen der Grundzüge der OOP: Kapselung. Die Eigenschaften einer Klasse sollen nicht zugänglich sein, bzw. nur über Nachrichten, die man dem Objekt schicken kann. Genau das wird hier gemacht. [EDIT] funktioniert als zuweisung. Nur unter Java 1.5, wegen Autoboxing. Unter 1.4 (noch recht verbreitet) geht das nicht. [/EDIT] Peter Zitieren
SaPaul Geschrieben 6. Juni 2006 Autor Geschrieben 6. Juni 2006 Dann sind jetzt alle Unklarheiten beseitigt, danke Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.