Dezimal zu Binärcode Programm

  • Themenstarter Themenstarter Gelöschtes Mitglied 61081
  • Beginndatum Beginndatum
G

Gelöschtes Mitglied 61081

Gast
Guten Tag, wir sollten ein simples Programm schreiben, in das man eine Dezimalzahl eintippt und einen Binärcode herausbekommt.

Das ist mein Code:
Java:
 public static void main(String[] args) {
        
        Scanner eingabe = new Scanner(System.in);
        
        System.out.println("Bitte eine Zahl eingeben um ins Binärsystem umzuwandeln");
        
        int Teilergebnis;
        int Endergebnis = 0;
        StringBuilder Umdrehen = new StringBuilder();
        //ZE= Zwischenergebnis
        
        for (int ZE = eingabe.nextInt(); ZE> 0; ZE = ZE/2)
            
        {
            
            Teilergebnis = ZE % 2;
            Endergebnis = Endergebnis + Teilergebnis;
            
            Umdrehen.append(Endergebnis);
            
            
        System.out.print(Umdrehen.reverse());
        
        }
        
        
    }
    
}

Meine 1 Frage ist: Bei dem Eintippen der Zahl 4 kommt als Binärcode z.B 000100 heraus. Der Richtige wäre aber nur 100. Es haut mir immer 3 Nullen noch davor, sieht jemand den Fehler?

Ich habe notgedrungen mit der Reverse Funktion (ergooglet) gearbeitet. Gerne würde ich aber auch den Lösungsweg auf dem Weg verstehen, der verlangt war. Mein Programm mit dem Endergebnis als Ausgabe (ohne diese Reversebefehle) ist logischerweise falsch rum, da man Binärcodes ja von unten nach oben bzw. hinten nach vorne ausliest. Irgendwie würde ich gerne Teilergebnisse erzielen, für z.B den Binärcode 100 jeweils 1; 0; und 0 und diese dann manuell zusammenfügen, sodass ich einen richtigen Binärcode zu einer Zahl habe, auch ohne Reversebefehl.

Vielen lieben Dank für die Hilfe!
 
Du hängst das "Teilergebnis" immer ans Ende. Mach das einfach umgekehrt: "Endergebnis = Teilergebnis + Endergebnis". Dann brauchst du "Umdrehen" auch nicht, und gibst das "Endergebnis" am Ende aus (nach der For-Schleife).

Viele Grüße
Kevin

PS: Ups, ich sehe gerade, "Endergebnis" ist eine Zahl. Die Variable müsstest du dann ändern zu einem String, damit es passt.
 
Du gibst alle Zwischenergebnisse aus. Und die Zwischenergebnisse sind halt "0", "00" und dann das "100", was dann alles ausgegeben eben das 000100 macht.

Du willst aber doch nur am Ende das Ergebnis ausgeben, also mach die Ausgabe außerhalb der Schleife.
 
Wie änder ich das?

Ich habe jetzt Endergebnis zu String gewechselt aber dann geht gar nichts mehr weil Int und String nicht miteinander agieren können.
Java:
   public static void main(String[] args) {
        
        Scanner eingabe = new Scanner(System.in);
        
        System.out.println("Bitte eine Zahl eingeben um ins Binärsystem umzuwandeln");
        
      
        int Teilergebnis;
        String Endergebnis;
        //StringBuilder Umdrehen = new StringBuilder();
        //ZE= Zwischenergebnis
        
        for (int ZE = eingabe.nextInt(); ZE> 0; ZE = ZE/2)
            
        {
            
            Teilergebnis = ZE % 2;
            Endergebnis = Teilergebnis + Endergebnis;
            
            //Umdrehen.append(Endergebnis);
            
            
            
        //System.out.print(Umdrehen.reverse());
        
        }
          System.out.print(Endergebnis);
        
        
        
        
        
        
    }
    
}
? 😛
 
Packe ich im Ursprungszustand nur die Ausgabe aus der Schleife, kommt nur 1 raus.
 
Wie ich geschrieben habe: Lediglich die Ausgabe muss außerhalb der Schleife sein. Also lediglich das Schleifenende vor die Ausgabe packen.

Das sähe dann z.B. so aus:
Java:
import java.util.Scanner;

public class Test {
     public static void main(String[] args) {
       
        Scanner eingabe = new Scanner(System.in);
       
        System.out.println("Bitte eine Zahl eingeben um ins Binärsystem umzuwandeln");
       
        int Teilergebnis;
        int Endergebnis = 0;
        StringBuilder Umdrehen = new StringBuilder();
       
        for (int ZE = eingabe.nextInt(); ZE> 0; ZE = ZE/2)
           
        {
           
            Teilergebnis = ZE % 2;
            Endergebnis = Endergebnis + Teilergebnis;
           
            Umdrehen.append(Endergebnis);
           
        } // Neue Zeile!
           
        System.out.print(Umdrehen.reverse());
       
//        }  // Auskommentiert!
       
       
    }
}

Mit folgender Ausgabe:
Code:
C:\Projects\test>javac Test.java

C:\Projects\test>java Test
Bitte eine Zahl eingeben um ins Binärsystem umzuwandeln
4
100
C:\Projects\test>
 
Danke, aber wenn du jetzt eine 5 als Eingangswert angibst, kommt 211 raus, was falsch ist.
 
JustNobody: Er wollte die Methode "reverse" aber nicht benutzen.
MatzeMueller543: Doch das funktioniert. Java wandelt das "int" um in ein "String". Was fehlt ist nur ein Initialwert für "Endergebnis", also einfach
Code:
String Endergebnis = ""
 
Wenn ich andere Zahlen eintippe, dann kommen als Binärcodes nicht nur 0 und 1 raus. Wo ist mein Fehler?
 

Neue Themen


Zurück
Oben