in for-Schleife deklarierte Variablen erhalten?

Diskutiere in for-Schleife deklarierte Variablen erhalten? im Java Basics - Anfänger-Themen Forum; Hej! Ich muss bis Dienstag noch 2 Programme schreiben, und da ich, nachdem ich heute den ganzen Tag davor saß, nicht so richtig weitergekommen...

  1. Fylgja
    Fylgja Neues Mitglied
    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. Vielleicht hilft dir das kostenlose Training weiter --> (hier klicken)
  3. Camill
    Camill Neues Mitglied
    Ziemlich simpel - sofern ich dich richtig verstanden habe. Du musst die Variable einfach außerhalb der for Schleife deklarieren.
     
  4. Fylgja
    Fylgja Neues Mitglied
    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:

    Code (Java):
         float zahl = IO.readFloat ("Bitte eine Gleitkommazahl: ");
         int exponent = 0;
         float mantisse;
         float f;
         int potenz = 1;

         if (zahl > 0) {
         IO.print ("0");

         for (potenz = 1; potenz <= zahl; potenz = 2 * potenz) {
          if (potenz <= zahl) {
          exponent = exponent + 1;
          IO.print ("Exponent: " + exponent);

          }
           while (exponent != 0)  {
             if (exponent % 2 == 0) IO.print("0");
             else IO.print ("1");
             exponent = exponent / 2;
           }
         }
         }
     
    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.
     
  5. nillehammer
    nillehammer Guest
    Darfst Du Float.toIntBits und Integer.toBinaryString benutzen? Dann wäre es ein Zweizeiler.
    Code (Java):

    public static void outputFloatBits(final float f) {
      final int intBitsOfFloat = Float.toIntBits(f);
      System.out.println(Integer.toBinaryString(intBitsOfFloat);
    }
     
    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.
     
    Zuletzt von einem Moderator bearbeitet: 6. Nov. 2011
  6. langhaar!
    langhaar! Neues Mitglied
     
    Zuletzt bearbeitet: 6. Nov. 2011
  7. Fylgja
    Fylgja Neues Mitglied
    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! :)
     
  8. nillehammer
    nillehammer Guest
    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.
     
  9. Schau dir jetzt hier den Kurs an und lerne Java zu programmieren: --> Hier klicken, um mehr zu erfahren (Klick)
Die Seite wird geladen...

in for-Schleife deklarierte Variablen erhalten? - Ähnliche Themen

Wird eine if Bedingung nach einer for-Schleife nach jeder Iteration überprüft?
Wird eine if Bedingung nach einer for-Schleife nach jeder Iteration überprüft? im Forum Java Basics - Anfänger-Themen
For-Schleife durch "ESC" verlassen?
For-Schleife durch "ESC" verlassen? im Forum Java Basics - Anfänger-Themen
Arrays/Geschachtelte For-Schleife Fehler
Arrays/Geschachtelte For-Schleife Fehler im Forum Java Basics - Anfänger-Themen
Mehrdimensionale Arrays mit geschachtelter for-Schleife initialisieren
Mehrdimensionale Arrays mit geschachtelter for-Schleife initialisieren im Forum Java Basics - Anfänger-Themen
Kann mir jemand sagen, was bei folgender for-Schleife passiert?
Kann mir jemand sagen, was bei folgender for-Schleife passiert? im Forum Java Basics - Anfänger-Themen
Thema: in for-Schleife deklarierte Variablen erhalten?