Programm zur Binärdarstellung von Integer-Zahlen !

cara123

Mitglied
Hi , ich soll als Hausaufgabe eine Methode schreiben "public static String getBinary(int number)", die die Binärdarstellung (ohne 2er Komplement) der Variablen number als String zurückgibt.
Ich hab Probleme mit der return-Anweisung am Ende, da die Variable ja nur innerhalb der Schleife gilt...
Bitte helft und schon mal danke im Vorraus! ;)

Code:
public static void main (String[]args){
       System.out.println(4);
    }
   
   
    public static String getBinary(int v){
     String number;
     while(v>0){
         number = v%2==0? "0":"1";
         v=v/2;
         number= number + number;
         return number;
        }
       
    }
 

DrZoidberg

Top Contributor
Ersetze die Zeile
Java:
number = v%2==0? "0":"1";
mit
Java:
number = (v%2) + number;
"number = number + number" kannst du löschen. Das return muss ganz ans Ende der Methode, also hinter die While Schleife.
 

Robat

Top Contributor
Warum sollte number nur innerhalb der Schleife gelten? Du musst den String initialisieren dann geht der Fehler auch weg ;)
 

cara123

Mitglied
@DR Zoidberg
Danke und ja ich weiß, dass das return aus der Schleife raus muss, aber wenn ich es ans Ende der Methode setze kommt der Fehler das der String noch nicht initialisiert wurde...
 

cara123

Mitglied
@ Robat
Ich hab den String doch in der Schleife initialisiert oder nicht? Und ich muss ihn ja auch dort initialisieren, sodass bei jeder Wiederholung der Schleife im String entweder eine 0 oder eine 1 abgespeichert wird... Oder nicht ?
 

Robat

Top Contributor
Nicht zwangsläufig. Für v <= 0 wird die while-Schleife nie betreten und der String würde uninitialisiert bleiben. Daher musst du ihn am Anfang initialisieren String number = "";
 

cara123

Mitglied
@ Robat
Ich habs jetzt so umgeändert, doch wenn ich mir die Methode/Klasse auf der Konsole ausgeben lassen, ist der Inhalt leer... Also irgendwie wird so die Schleife komplett ignoriert und einfach der String leer ausgegeben, so wie ich ihn initialisiert hab.. danke übrigens nochmal das du so nett bist und mir hilfst !
Code:
public static void main (String[]args){
       System.out.println(getBinary(4));
    }
   
   
    public static String getBinary(int v){
     String binärZahl="";
     while(v>0){
         binärZahl = v%2==0? "0":"1";
         v=v/2;
        }
     return binärZahl;
    }
 

Robat

Top Contributor
Also komplett leer sollte der String eigentlich nicht sein. Bei dem Programm, so wie du es jetzt hast, sollte am Ende eigentlich eine 1 ausgegeben werden.
Aber schau dir mal die Zeile genau an:
Java:
binärZahl = v%2==0? "0":"1"
Du überschreibst den String jedes mal wieder .. du willst aber an den String eine 0 oder 1 anfügen. (Hinweis += anstatt = ).
Dann sollte dir beim anschauen der Binärzahl noch etwas auffallen. Aber dazu später mehr
 

cara123

Mitglied
Vielen Dank für den Tipp mit dem +! Der Gedanke war mir auch gekommen, ich hätte aber nicht gewusst wie ich lösen kann also danke! Also ich arbeite mit BlueJ und selbst nach dem umändern wird bei mir nichts angezeigt, nicht mal die leere weiße Konsole, sondern einfach komplett gar nichts...
 

Robat

Top Contributor
Ich kann dir leider nicht sagen wie es mit BlueJ läuft da ich selber nie damit gearbeitet habe und davon auch nichts halte.

Du solltest aber auf jeden Fall 1 was feststellen (wenn Du es richtig ausführst): Deine Binärzahl wird falsch rum dargestellt... Also anstatt 100 bekommst Du 001.
 

cara123

Mitglied
Oh ok ja wir müssen damit arbeiten, weil unser prof meinte, dass es das beste für den Anfang ist ...
und ja da hast du wieder recht... Hab aber leider keine Ahnung wie ich es umdrehe denke ich..
 

Robat

Top Contributor
Nun ja .. momentan hängst du die "1" oder "0" immer hinten an den String an. binärZahl = binärZahl + (v%2==0? "0":"1"); Deshalb bekommst du:
Code:
0
00
001
Wenn du es genau andersrum haben willst, musst du eben erst die "0" oder "1" schreiben und danach den Rest des Strings. Die beiden "Summanden" also einfach umdrehen.
Code:
0
00
100
 

cara123

Mitglied
@ Robat
Oh mein Gott danke! Es klappt !
Code:
public static void main (String[]args){
       System.out.println(getBinary(16));
    }
   
   
    public static String getBinary(int v){
     String binärZahl="";
     while(v>0){
         binärZahl = (v%2==0? "0":"1")+ binärZahl;
         v=v/2;
        }
     return binärZahl;
    }
 

cara123

Mitglied
lh101h
 

Neue Themen


Oben