Hallo zusammen
Ich soll ein Programm schreiben, welches eine beliebige Zahl von einem Zahlensystem in ein anderes umrechnet. Es sollte die Systeme 2,8,10,16 abdecken. Ich habe das Programm schon so gut wie fertig doch mit den Kommazahlen habe ich noch Probleme.
Ich glaube es liegt daran, dass im Programm die Variable "c" in Long ist. Doch falls ich den typ ändern will funktioniert der Rest nicht mehr.
Hier in einem kleinen Beispiel. Hier gibt es mir die Fehlermeldung "- The method toBinaryString(String) is undefined for the type String" aus. Ich hoffe mir kann jemand helfen und sagen was ich falsch mache oder ob es überhaupt möglich wie ich es machen will.
Ich soll ein Programm schreiben, welches eine beliebige Zahl von einem Zahlensystem in ein anderes umrechnet. Es sollte die Systeme 2,8,10,16 abdecken. Ich habe das Programm schon so gut wie fertig doch mit den Kommazahlen habe ich noch Probleme.
Java:
[LIST=1]
[*]package zahlensysteme;
[*]
[*] import java.util.*;
[*] public class zahlensysteme {
[*] public static void main (String argv[]){
[*] Scanner input = new Scanner (System.in);
[*] int a,b;
[*] long c;
[*] String n;
[*]
[*]
[*] System.out.print("Geben sie eine Zahl (bzw.Buchstaben beim Hexadezimalsystem) ein: ");
[*] //"Falls eine Zahl mit Kommastellen (Bsp. 3.5) eingeben wird es das Programm später ein Fehler ausgeben.
[*] // Falls eine Zahl eingegeben wird die nicht zum Zahlentyp gehört wird auch ein Fehler ausgegeben:
[*] n = input.next();
[*] System.out.println("Eingegebene Zahl:"+n+" ");
[*] System.out.print("Basis der eingegebenen Zahl: ");
[*] a = input.nextInt();
[*] while(a!=16&&a!=10&&a!=8&&a!=2){
[*] System.out.println("Sie haben eine Basis eingegeben, welche nicht den Zahlentypen 2,8,10 oder 16 entspricht.(Das Programm kann zurzeit nur diese Zahlentypen verwenden, wir werden es sobald wie möglich erweitern..;)"
[*] + " Versuchen sie es erneut.");
[*] System.out.print("Basis der eingegebenen Zahl: ");
[*] a = input.nextInt();}
[*] System.out.print("Basis der umgewandelten Zahl: ");
[*] b = input.nextInt();
[*] while(b!=16&&b!=10&&b!=8&&b!=2){
[*] System.out.println("Sie haben eine Basis eingegeben, welche nicht den Zahlentypen 2,8,10 oder 16 entspricht.(Das Programm kann zurzeit nur diese zahlentypen verwenden, wir werden es sobald wie möglich erweitern..;)"
[*] + " Versuchen sie es erneut.");
[*] b = input.nextInt();}
[*] switch (a){
[*] case 2:
[*] switch(b){
[*] case 2: c = (Long.valueOf(""+n+"",2)); System.out.println("Umgewandelte Zahl: "+Long.toBinaryString(c)+"");break;
[*] case 8: c = (Long.valueOf(""+n+"",2));System.out.println("Umgewandelte Zahl: "+Long.toOctalString(c)+""); break;
[*] case 16: c = (Long.valueOf(""+n+"",2));System.out.println("Umgewandelte Zahl: "+Long.toHexString(c)+""); break;
[*] case 10: c = (Long.valueOf(""+n+"",2));System.out.println("Umgewandelte Zahl: "+Long.toString(c)+"");} break;
[*] case 8:
[*] switch(b){
[*] case 2: c = (Long.valueOf(""+n+"",8)); System.out.println("Umgewandelte Zahl: "+Long.toBinaryString(c)+""); break;
[*] case 8: c = (Long.valueOf(""+n+"",8)); System.out.println("Umgewandelte Zahl: "+Long.toOctalString(c)+""); break;
[*] case 16: c = (Long.valueOf(""+n+"",8)); System.out.println("Umgewandelte Zahl: "+Long.toHexString(c)+""); break;
[*] case 10: c = (Long.valueOf(""+n+"",8)) ;System.out.println("Umgewandelte Zahl: "+Long.toString(c)+"");} break;
[*] case 16:
[*] switch(b){
[*] case 2: c = (Long.valueOf(""+n+"",16)); System.out.println("Umgewandelte Zahl: "+Long.toBinaryString(c)+""); break;
[*] case 8: c = (Long.valueOf(""+n+"",16)); System.out.println("Umgewandelte Zahl: "+Long.toOctalString(c)+""); break;
[*] case 16: c = (Long.valueOf(""+n+"",16)); System.out.println("Umgewandelte Zahl: "+Long.toHexString(c)+""); break;
[*] case 10: c = (Long.valueOf(""+n+"",16)); System.out.println("Umgewandelte Zahl: "+Long.toString(c)+"");} break;
[*] case 10:
[*] switch(b){
[*] case 2: c = (Long.valueOf(""+n+"",10)); System.out.println("Umgewandelte Zahl: "+Long.toBinaryString(c)+""); break;
[*] case 8: c = (Long.valueOf(""+n+"",10)); System.out.println("Umgewandelte Zahl: "+Long.toOctalString(c)+""); break;
[*] case 16: c = (Long.valueOf(""+n+"",10)); System.out.println("Umgewandelte Zahl: "+Long.toHexString(c)+""); break;
[*] case 10: c = (Long.valueOf(""+n+"",16)); System.out.println("Umgewandelte Zahl: "+Long.toString(c)+"");}break;
[*]
[*]
[*]
[*]
[*] }
[*] System.out.print("Programmende");
[*]
[*] }
[*] }
[/LIST]
Ich glaube es liegt daran, dass im Programm die Variable "c" in Long ist. Doch falls ich den typ ändern will funktioniert der Rest nicht mehr.
Hier in einem kleinen Beispiel. Hier gibt es mir die Fehlermeldung "- The method toBinaryString(String) is undefined for the type String" aus. Ich hoffe mir kann jemand helfen und sagen was ich falsch mache oder ob es überhaupt möglich wie ich es machen will.
Java:
[LIST=1]
[*]package test;
[*]import java.util.*;
[*]public class test1 {
[*] public static void main (String argv[]){
[*] Scanner input = new Scanner (System.in);
[*]String d;
[*]
[*]String zahl;
[*]System.out.print("Zahl: ");
[*] d = input.next();
[*]System.out.println("Umgewandelte Zahl: "+String.toBinaryString(d)+"");
[*] }}
[/LIST]