Java Programm Umrechnung Dezimal zu Binärsystem?
Hallo,
wie müssen für die Uni mit Java ein Rechner programmieren, der mir eine Dezimalzahl ins Binärsystem umrechnet. Mit Restwertmethode.
Leider bin ich nicht so gut darin und krieg nur das hin:
Die Dezimalzahl darf zwischen 0 und 255 liegen.
Könnt ihr mir BITTE helfen?
Ich steh total auf Schlauch.
DANKE
Was macht es stattdessen?
Gibt es Fehlermeldungen, welche?
Code bitte in </> formatiert hier rein
danke
Wenn ich die Dezimalzahl eingebe, kommt auch wieder nur die Dezimalzahl raus. Der rechnet nichts um.
Fehlermeldungen sagt er mir nichts.
Quelltext kommt gleich.
4 Antworten
Erwartest du jetzt, dass wir das Programm im Kopf durchgehen oder es abtippen und gucken, was vielleicht falsch sein könnte?
Standardfragen:
- Was soll das Programm machen? (hast du schon gesagt)
- Was macht es stattdessen?
- Gibt es Fehlermeldungen, welche?
Quelltext hier posten und (ganz wichtig!) als Quelltext formatieren, indem du im Eingabefenster oben </> anklickst
Du hast ein "int Endergebnis", darauf addierst du Nullen und Einsen. So erhältst du die binäre Quersumme. Die binären Quersummen hängst in jedem Durchlauf an einen String hinten an und gibst ihn nach getaner Tat umgedreht aus.
Du willst aber die Nullen und Einsen sehen und nicht zusammenaddieren.
Also deklarierst du einen "String endergebnis", initialisierst ihn mit "" (Leerstring) und stellst das Teilergebnis (0 oder 1) voran:
endergebnis = teilergebnis + endergebnis
Das sollte helfen
Das ist sauber erklärt was eine Frage zu Quellcode beinhalten sollte
Nicer Post :)
import java.util.Scanner;
public class dezibinär {
public static void main(String[] args) {
try (Scanner eingabe = new Scanner(System.in)) {
System.out.println("23");
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());
}
}
}
}
Die kleinste Änderung, damit es funktioniert wäre, statt
Umdrehen.append(Endergebnis)
zu schreiben
Umdrehen.append(Teilergebnis)
Die Variable Endergebnis brauchst du nicht, du sammelst die Binärziffern in Umdrehen.
BTW: Ich habe gelernt, dass man in Java Klassen groß schreibt und Variablen und Methoden klein. Du machst es genau umgekehrt. Gewöhn es dir am besten frühzeitig richtig an.
Danke für die Hilfe. Komischerweise funktioniert es nicht.
Mach aus
System.out.print(Umdrehen.reverse());
bitte
System.out.println(Umdrehen.reverse());
Ich nehme an, du kennst den Unterschied.
Wie nichts? Dann solltest du vielleicht den Rechner zunächst einschalten?
Ja, ich lass den ja durchlaufen, aber das Ergebnis ist dasselbe. Er zeigt mir nur die Dezimalzahl an.
import java.util.Scanner;
public class dezi {
public static void main(String[] args) {
try (Scanner eingabe = new Scanner(System.in)) {
System.out.println("23");
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(Teilergebnis);
System.out.println(Umdrehen.reverse());
}
}
}
}
Bei mir läuft das und tut was es soll.
Ja, ich lass den ja durchlaufen, aber das Ergebnis ist dasselbe. Er zeigt mir nur die Dezimalzahl an.
Das ist etwas anderes als nichts!
Meist hilft es, wenn man sein Problem einfach richtig formuliert. Sonst wird das ein Ratespiel, bei dem man schnell die Lust verliert. So wie ich jetzt.
Lauffähige Version siehe andere Antwort hier.
Ich kenne zwar dein genaues Problem nicht, aber für mich sehen die Zeilen:
Endergebnis = Endergebnis + Teilergebnis
Umdrehen.append(Endergebnis)
nicht ganz so gut aus.
Versuche doch einfach mal
Umdrehen.append(Endergebnis)
Vielleicht macht dann dein Programm was du willst.
Die in den anderen Antworten überarbeitete Fassung deines Quelltextes funktioniert. Zwei Anmerkungen noch dazu: Klassennamen sollten m.E. keine Umlaute enthalten und die Ausgabe der 23 macht irgendwie keinen Sinn.
Und hier noch eine etwas andere Version des Ganzen:
public class DecToBin {
public static void main(String []args) {
// Umzuwandelnde Dezimalzahl
int dec = 23;
// Initialisierung von Hilfsvariablen
int result = 0;
int rest = 0;
StringBuilder bin = new StringBuilder();
// Umrechnung nach Restwertverfahren
while (dec > 0) {
result = dec/2;
rest = dec%2;
System.out.println(dec + " : 2 = " + result + " R " + rest);
dec = result;
bin.append(rest);
}
System.out.println("=> " + bin.reverse());
}
}
import java.util.Scanner;
public class dezibinär {
public static void main(String[] args) {
try (Scanner eingabe = new Scanner(System.in)) {
System.out.println("23");
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());
}
}
}
}
Wenn ich die Dezimalzahl eingebe, kommt auch wieder nur die Dezimalzahl raus. Der rechnet nichts um.
Fehlermeldungen sagt er mir nichts.