Zahlensysteme umrechnen; Probleme beim Umwandeln

neville123

Mitglied
Hallo zusammen
Da ich beim anderen Unterforum für Basics bis jetzt kein Antwort erhalten habe versuche ich es einmal hier.
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:
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");
			
	}
	}

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 ist wie ich es machen will?

Java:
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)+"");
	}}
 
2 Sekunden googeln:

Umrechnung von Zahlensystemen

Besser kann man es nicht erklären ;D

Außerdem:

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.

Ich habe das bei dem Code nicht hundert prozent durchblickt, was hier genau passieren soll. Schau dir einfach den link oben an.
 
Zuletzt bearbeitet:
Vielen Dank für die Antwort. Doch auf die Idee bin ich selber schon gekommen und habe auch diese Seite gefunden. Leider steht auf dieser Seite nicht wie mein Problem gelöst wird, nur wie man es berechnen kann. Mein Probelm ist immernoch warum man nur von "long" und nicht von "String" in andere Zahlensysteme umwandeln kann, wie im kleineren Beispiel beschrieben.
 
Es gibt die Methoden
Java:
Integer.parseInt(String s, int radix)
Integer.toString(int i, int radix)[/Java] wobei "radix" das Zahlensystem darstellt, von dem/in das geparst werden soll und eine wert zwischen 2 und 36 haben darf. Ist das nicht genau das, was du suchst!?
 
Ich bin mir nicht sicher, aber glaube schon dass es das ist. Köntest du mir ein kleines Beispiel machen, wo du die Zahl 0.5 vom 10er System in das 2er System umwandelst damit ich draus komme? Noch Danke für deine Antwort
 

Zurück
Oben