in for-Schleife deklarierte Variablen erhalten?

Diskutiere in for-Schleife deklarierte Variablen erhalten? im Java Basics - Anfänger-Themen Forum

  1. #1
    Fylgja


    in for-Schleife deklarierte Variablen erhalten?

    Hej!

    Ich muss bis Dienstag noch 2 Programme schreiben, und da ich, nachdem ich heute den ganzen Tag davor saß, nicht so richtig weitergekommen bin, wollt' ich hier mal um Hilfe fragen!

    Mein Problem ist, dass ich einer Variable in einer for-Schleife einen Wert zuweise, den ich hinterher noch weiterverarbeiten will. Aber wenn die Schleife zu Ende ist, verliert die Variable diesen zugewiesenen Wert ja wieder. Kann man das irgendwie umgehen?
    Dann könnte ich die Aufgaben, denke ich, relativ problemlos lösen. Aber daran scheitert's im Moment :/

    Ich hoffe mal, ihr wisst, was ich meine, und schonmal danke für die Hilfe

  2. #2
    Camill


    Ziemlich simpel - sofern ich dich richtig verstanden habe. Du musst die Variable einfach außerhalb der for Schleife deklarieren.

  3. #3
    Fylgja


    Deklariert habe ich sie ganz am Anfang. Aber in der Schleife wird ihr Wert dann verändert, den ich hinterher noch brauche. Also wenn z.B. x in der Schleife auf 3 kommen würde, wäre es dann nach der Schleife immernoch bei 3? :>

    Mh und die Schleife an sich will grade auch nicht :/

    Also die Aufgabe ist, ein Programm zu schreiben, dass nach Eingabe einer Gleitkommazahl diese in 32-bit Darstellung wieder ausgibt.

    Ich will erstmal mit positiven Zahlen anfangen und dafür das Vorzeichen drucken. Dann mit der for-Schleife will ich den richtigen Exponenten finden der mit der while-Konstruktion darunter in Binärcode umgewandelt werden soll (ist nur bisher leider rückwärts und macht keine 8 Zeichen, wie es eigentlich sollte.)

    Ich habe bisher:

    Java Code:
    1. float zahl = IO.readFloat ("Bitte eine Gleitkommazahl: ");
    2. int exponent = 0;
    3. float mantisse;
    4. float f;
    5. int potenz = 1;
    6.  
    7. if (zahl > 0) {
    8. IO.print ("0");
    9.  
    10. for (potenz = 1; potenz <= zahl; potenz = 2 * potenz) {
    11. if (potenz <= zahl) {
    12. exponent = exponent + 1;
    13. IO.print ("Exponent: " + exponent);
    14.  
    15. }
    16. while (exponent != 0) {
    17. if (exponent % 2 == 0) IO.print("0");
    18. else IO.print ("1");
    19. exponent = exponent / 2;
    20. }
    21. }
    22. }


    Irgendwie will die for-Schleife gerade auch nicht funktionieren. Wenn ich mir da direkt den Exponenten ausgeben lasse, kommt immer nur 1 raus :/

    Ach man.

  4. #4
    nillehammer

    Darfst Du Float.toIntBits und Integer.toBinaryString benutzen? Dann wäre es ein Zweizeiler.
    Java Code:
    1.  
    2. public static void outputFloatBits(final float f) {
    3. final int intBitsOfFloat = Float.toIntBits(f);
    4. System.out.println(Integer.toBinaryString(intBitsOfFloat);
    5. }

    Bei solchen Aufgaben ist ein Blick in die API-Dokumentation evtl. passender Klassen (hier also Float) immer eine gute Idee (es sei denn, der Prof verbietet das ).

    //Edit: Integer.toBinaryString gibt evtl. führende Nullen in der Bitfolge nicht aus. Ggf. musst Du also überprüfen, ob der String die length 32 hat und notfalls noch die entsprechende Anzahl Nullen vorne dran basteln.

  5. #5
    langhaar!


    Zitat Zitat von nillehammer Beitrag anzeigen
    Darfst Du Float.toIntBits und Integer.toBinaryString benutzen? Dann wäre es ein Zweizeiler.
    [JAVA]
    Das kann ich mir nicht als Sinn einer Übung vorstellen; es hätte keinen Übungseffekt

    Zitat Zitat von Fylgja Beitrag anzeigen
    Deklariert habe ich sie ganz am Anfang. Aber in der Schleife wird ihr Wert dann verändert, den ich hinterher noch brauche. Also wenn z.B. x in der Schleife auf 3 kommen würde, wäre es dann nach der Schleife immernoch bei 3? :>
    Du gibts in der Schleife eine Bedingung an und die Schleife wird so oft ausgeführt, wie die Bedingung erfüllt ist. Ergo ist die Bedingung nach Beendigung der Schleife nicht mehr erfüllt.

    Java Code:
    1.  
    2. int i = 0;
    3. for (; i < 10; i++) {
    4. ...}


    Die letzte Zahl in der Schleife ist 9, nachher ist i = 10.
    Wenn du Zwischenwerte der Schleife benötigst, so musst du diese speichern.

    Wenn du letzen Wert der Schleifenvariable haben willst, so kannst du die letzte Operation rückgängig machen. Also in diesem Beispiel i--.

  6. #6
    Fylgja


    Gut, es funktioniert jetzt auf jeden Fall, ich hatte da wohl irgendwie 'nen Denkfehler.
    Danke aber

    Ich setz' mich da dann gleich oder morgen nochmal dran. Und in der Zwischenzeit versuche ich rauszufinden, warum mein anderes Programm behauptet, 77 sei eine Primzahl^^

    Aber so bin ich schonmal ein bisschen weiter, danke!

  7. #7
    nillehammer

    Zitat Zitat von langhaar!
    Das kann ich mir nicht als Sinn einer Übung vorstellen; es hätte keinen Übungseffekt
    Der Übungseffekt wäre, sich mit der API-Dokumentation auseinanderzusetzen und dort vielleicht was zu finden, was man benutzen kann. Das ist eine Kompetenz, die einem dann später bei der Benutzung sämtlicher auch externer Libraries (z.B alles von Apache commons) hilft.

    Und seit Java Open Source ist, kann man sich ja den Quellcode der vorgeschlagenen Methoden anschauen. Das Lesen (und hoffentlich Nachvollziehen) bestehenden Codes kann ja auch den gewünschten Lerneffekt haben.

    Wenn es natürlich nur darum geht, Schleifen zu üben, dann hast Du Recht. Dann sollte man als Prof aber auch Übungen nehmen, wo genau das geübt wird. Sprich, wo man ganz schnell sieht, ob man was falsch gemacht hat. Nur für das Üben von Schleifen, ist dieses Beispiel viel zu überfrachtet mit anderen -zumindest am Anfang- komplizierten Fragestellungen. Aber lassen wir das... über das didaktische Konzept von faulen Profs brauchen wir hier ja nicht zu schwadronieren.

Java Videokurs

Keine Antwort auf Deine Suche gefunden? Registriere Dich kostenlos und stelle Deine eigene Frage zu Java!

Jetzt kostenlos registrieren