# Zahlensysteme Hilfe!...



## vin030 (18. Nov 2016)

Erstellen Sie ein Programm Umrechnung im Paket praktikum4, welches mit einem selbst zuerstellenden Algorithmus die Umrechnung einer positiven Dezimalzahl (int) in ein Zahlensystem mit einer Basis (int) zwischen 2 und 16 durchführt. Für Stellenwerte größer 9 sind Buchstaben (A, B, C,…) zu verwenden. Die Stellenwerte sind in einer String – Konstanten zu hinterlegen. Prüfen Sie bei der Eingabe die Dezimalzahl und die Basis und beenden Sie bei Verletzung der Anforderungen das Programm mit einer entsprechenden Fehlermeldung.

Ich bekomme es nicht umgesetzt ...


----------



## Flown (18. Nov 2016)

Was hast du bisher?


----------



## vin030 (18. Nov 2016)

So gut wie nur Datenmüll. Ich sende mal den Code den bisherigen


----------



## vin030 (18. Nov 2016)

@Flown 


```
package praktikum4;

import util.IO;

public class StringSpilt {

    void execute(){
  
    System.out.println("Programm zur Umrechnung von Zahlensystem (Basen von 2-16)");
    System.out.println("Bitte geben Sie die gewschte Base an:");
    int ziffer = IO.readInt("");
    System.out.println("jetzt nur noch eine positive Zahl angeben die Sie konvertieren m鐼hten");
    int base = IO.readInt("");
  
  
    int [] baseArray = {2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}; {for(
    int i = 0;i<baseArray.length;i++)
    {
        if (baseArray[i] == base)
            convert (ziffer, baseArray[i]);
    }
    }

public String convert (int num, int base){
    String convertedNumber = "";
    StringBuilder b = new StringBuilder (convertedNumber);
  
    while (number != 0)
    {
        b.append(String.valueOf(num%base));
        num/=base;
    }
  
    return b.reverse ( ;
    }

    public static void main(String[] args) {
        StringSpilt prg = new StringSpilt();
        prg.execute();
    }

      
    }

    private void convert(int ziffer, int i) {
        // TODO Auto-generated method stub
      
    }
}
```


----------



## Flown (18. Nov 2016)

Erzähl doch mal ein bischen was bei dir nicht funktioniert?


----------



## vin030 (18. Nov 2016)

@Flown
Die gesamte Berechnung ich gebe die Basis ein und die gewünschte Zahl und dann passiert einfach nichts ich erkenne weder das Problem noch weiß ich ob das erzeugte Array so sinnvoll war .


----------



## Flown (18. Nov 2016)

Angaben sind immer fast wie ein Rezept. Weißt du was eine Stringkonstante ist und wie man diese deklariert?(Tipp: da stehen alle Zahlen von 0-9A-F drinnen).


----------



## vin030 (18. Nov 2016)

Willst du darauf hinaus dass ich die Zahlen durch ein String ersetzen soll ? Das wäre der nächste Schritt gewesen aber mein Problem ist bisher funktioniert nicht mal die Berechnung.


----------



## Flown (18. Nov 2016)

Eigentlich wollte ich dir ja zu einem "AHA-Moment" verhelfen, wenn du selbst darauf kommst, aber es ist Wochenende und du bist ja schon knapp dran:

```
public class Test {
  public static void main(String... args) {
    for (int i = 2; i <= 16; i++) {
      System.out.println(i + ": " + convert(1_000_000, i));
    }
  }
 
  private static final String DIGITS = "0123456789ABCDEF";
 
  public static String convert(int number, int base) {
    if (number < 0) {
      throw new IllegalArgumentException("Number to convert must be positive.");
    }
    if (base < 2 || 16 < base) {
      throw new IllegalArgumentException("Can only convert to a base between 2 <= base <= 16");
    }
    if (number == 0) {
      return "0";
    }
    String result = "";
    for (int n = number; n != 0; n /= base) {
      result = DIGITS.charAt(n % base) + result;
    }
    return result;
  }
}
```
Schönes Wochenende


----------



## vin030 (19. Nov 2016)

@Flown
Oh ok dankeschön


----------

