M
Mr. Jack Herer
Gast
Guten Abend,
Ich soll für die Uni ein Programm schreiben, das eine Binärzahl einliest, diese in eine Dezimalzahl umrechnet und ausgibt.
Mir ist klar dass ich das auch über einen einzigen einfachen Befehl erreichen kann, aber Ziel der Übung ist den Vorgang "per Hand" durchzuführen. Mein Ansatz sieht so aus:
[JAVA=42]import java.util.Scanner;
public class Binaer {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Geben sie eine Binaerzahl ein, um diese in eine Dezimalzahl umrechnen zu lassen: \n");
String bin = scanner.next();
int laenge = bin.length();
int binInt = Integer.parseInt( bin );
double sum = 0;
switch (binInt){
case 1:
case 0: for (int n = 0 ; +laenge <= n ; n++){
if ((int)bin.charAt(0+n) == '0')
sum = sum + 0;
else
sum = sum + Math.pow(2, +laenge+ - +n); }
System.out.println("Binaerzahl: " +bin+ "\nAls Dezimalzahl: " + sum);
default:
System.out.println("Eine Binaerzahl besteht nur aus 0 und 1!");
}
}
}
[/code]
Allerdings gibt er mir hier nur die Binärzahl aus und für die Dezimalzahl immer den Wert 0.
Was mache ich falsch? Ich habe schon gegoogelt und das Forum durchsucht, wollte aber auch keine einfach Copy&Paste Antwort, sondern wissen wieso mein Code nicht funktioniert.-
Vielen Dank schonmal für alle hilfreichen Antworten!
Grüße
Michael
Ich soll für die Uni ein Programm schreiben, das eine Binärzahl einliest, diese in eine Dezimalzahl umrechnet und ausgibt.
Mir ist klar dass ich das auch über einen einzigen einfachen Befehl erreichen kann, aber Ziel der Übung ist den Vorgang "per Hand" durchzuführen. Mein Ansatz sieht so aus:
[JAVA=42]import java.util.Scanner;
public class Binaer {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Geben sie eine Binaerzahl ein, um diese in eine Dezimalzahl umrechnen zu lassen: \n");
String bin = scanner.next();
int laenge = bin.length();
int binInt = Integer.parseInt( bin );
double sum = 0;
switch (binInt){
case 1:
case 0: for (int n = 0 ; +laenge <= n ; n++){
if ((int)bin.charAt(0+n) == '0')
sum = sum + 0;
else
sum = sum + Math.pow(2, +laenge+ - +n); }
System.out.println("Binaerzahl: " +bin+ "\nAls Dezimalzahl: " + sum);
default:
System.out.println("Eine Binaerzahl besteht nur aus 0 und 1!");
}
}
}
[/code]
Allerdings gibt er mir hier nur die Binärzahl aus und für die Dezimalzahl immer den Wert 0.
Was mache ich falsch? Ich habe schon gegoogelt und das Forum durchsucht, wollte aber auch keine einfach Copy&Paste Antwort, sondern wissen wieso mein Code nicht funktioniert.-
Vielen Dank schonmal für alle hilfreichen Antworten!
Grüße
Michael