如何在Java中将int转换为num Systems的字母?

时间:2016-11-19 12:00:47

标签: java arrays

public class StringSplit {

public void execute(){

    Scanner s = new Scanner(System.in);
    System.out.println("Programm zur Umrechnung von Zahlensystem (Basen von 2-16)");
    System.out.println("Bitte geben Sie die gewschte Base an:");
    int base = Integer.parseInt(s.nextLine());
    System.out.println("jetzt nur noch eine positive Zahl angeben die Sie konvertieren möchten");
    int ziffer = Integer.parseInt(s.nextLine());
    System.err.println(ziffer);
    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)
        {
            System.out.println(ziffer +" umgeandelt zur Basis " + baseArray[i] + " = " + convert(ziffer, baseArray[i]));
        }
    }
}

public String convert (int num, int base){
    String convertedNumber = "";
    StringBuilder b = new StringBuilder (convertedNumber);

    while(num != 0)
    {
        b.append(String.valueOf(num%base));
        num/=base;
    }

    return b.reverse().toString();
}

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

}

我想创建一个数组来解决这个问题所以如果Base是&gt; 9,编译器应该使用10 = A 11 = B,依此类推。 所以我正在考虑使用那个

Char [] decArray={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

我现在的问题是如何检查转换方法所有使用字母的基础?

1 个答案:

答案 0 :(得分:0)

没有必要处理使用字母的字母与不使用字母的字母。添加您的decArray(声明char[],而不是Char [] ...)并使用

b.append(decArray[num%base]);

取代

b.append(String.valueOf(num%base));

编辑:

如果您更喜欢使用String常量来提供数字字符, 你可以这样做:

// in StringSplit class, outside any method:
private static final String digits = "0123456789ABCDEF";

// inside method convert(int num, int base) :
    b.append(digits.charAt(num % base));