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 gewschte 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'};
我现在的问题是如何检查转换方法所有使用字母的基础?
答案 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));