# Zahlensysteme bis Hexadezimal umrechnen



## begin (1. Sep 2010)

Hallo
Wir nehmen gerade in der Schule Java durch und haben die Aufgabe bekommen, einen Umrechner zwischen verschiedenen Zahlensystemen bis einschließlich 16 zu schreiben. Ich habe auch ein Programm geschrieben, welches erst eine Zahl annimmt, dann das System, in welchem die Zahl geschrieben ist und schließlich, in welches System die Zahl umgerechnet werden soll. Zum Umrechnen wandle ich die Zahlen erst ins Dezimalsystem um und dann in ein anderes. Allerdings wird die Dezimalzahl nicht an die eigentliche Umrechnen-Funktion übertragen, weshalb in der "ergebnis"-String leerbleibt. Allerdings finde ich den Fehler nicht.
Hier ist mein Quelltext:

```
import java.util.*;

public class Umrechner
{


    public int ZahlDez;
    
    public String ZahlAus(String ZahlEin, int SystemEin, int SystemAus)
    {
        ZahlDez=0;
        int y=1;
        for(int i=0;i==ZahlEin.length();i++){
            ZahlDez += Integer.parseInt(""+ZahlEin.charAt(i))*y;
            y=y*SystemEin;
        }
        
    
        
        String ergebnis="";
        while(ZahlDez>0){
            switch(ZahlDez%SystemAus){
            case 10:ergebnis += "A";break;
            case 11:ergebnis += "B";break;
            case 12:ergebnis += "C";break;
            case 13:ergebnis += "D";break;
            case 14:ergebnis += "E";break;
            case 15:ergebnis += "F";break;
            default : ergebnis += (ZahlDez%SystemAus);break;
        }
            ZahlDez /= SystemAus;
        
        }
        ergebnis=new StringBuffer(ergebnis).reverse().toString();
        return ergebnis;
    }
}
```

Es wäre nett, wenn mir jemand helfen könnte.
Danke schonmal im Voraus


----------



## SlaterB (1. Sep 2010)

for(int i=0;i==ZahlEin.length();i++){
->
for (int i=0;i<ZahlEin.length();i++)


----------



## begin (1. Sep 2010)

Danke schonmal dafür 
Mein größtes Problem wäre damit gelöst. Allerdings ist mir grade noch eine kleinere Frage gekommen. Und zwar:
Wie bekomme ich es hin, dass das Programm Zahlen bis 64 Bit annimmt? Wenn ich einfach ZahlDez und SystemAus als long deklariere, sagt der Compiler:
 "possible loss of precision
  found: int required: long"
bei der CodeZeile

```
switch(ZahlDez%SystemAus){
```


----------



## SlaterB (1. Sep 2010)

das ein int rauskommt weißt du besser als der Compiler und kannst es entsprechend regelkonform umbauen
z.B.

int x = (int) (ZahlDez%SystemAus);
switch(x)

oder vielleicht auch schon

switch((int) (ZahlDez%SystemAus)){

was nicht unbedingt besser aussieht



Variablen und Methoden übrigens klein schreiben


----------

