将十进制转换为任何基本Java

时间:2018-10-26 22:50:26

标签: java

在这个问题上有人可以帮助我吗

编写一个在其MainClass中包含以下内容的程序:

  • 一个名为convertFromDecimal的方法,该方法使用两个整数作为参数。第一个整数是要转换的数字,第二个整数是要转换为的基数。 基本值可以是2(二进制)和16(十六进制)之间的任何数字。转换后的数字作为字符串返回。该方法的标题如下:public static String convertFromDecimal(int number, int base)

  • 在您的main方法中声明并初始化一个整数。然后通过调用convertFromDecimal方法在2-16之间的所有编号系统中打印其表示形式。您应该为此部分使用for循环。

提示:

  1. 请记住,为了将仅包含整数部分的十进制数转换为基数n,您需要在n上使用连续商的重复整数除法,将每一步中的余数保存下来,直到商为零。
  2. 请记住,以11到16为底的编号系统使用字母来继续在数字9之后计数。例如,以12为底的编号系统具有以下数字:{0,1,2,3…..,9,A,B}

这是我的代码。我知道这是不正确的:(

public static void main(String[] args) {
    convertFromDecimal (1,2);
}

public static String convertFromDecimal(int number, int base) {
 String S="  ";
    int[] converted =new int [base] ;
    while (number>0) {
        int R;
        R=number%base;
        number=number/base;
        char Rchar ;
        switch (R){
            case 10 : Rchar='A';
            case 11 : Rchar='B';
            case 12 : Rchar='C';
            case 13 : Rchar='D';
            case 14 : Rchar='E';
            case 15 : Rchar='F';

        }
            for (int i=0;i<base;i++) 
            {
        converted[i]=R;
                R=number%base;
        }
        for (int m=0;m<base ;m++)
   System.out.print(S +converted[m]);

    }
    return S;        
}

1 个答案:

答案 0 :(得分:0)

我将按照此处所述进行转换:http://www.robotroom.com/NumberSystems3.html

一个有效的示例(我更喜欢在这里使用while循环,但要求显示for

public static void main(String [] args) throws Exception {

    System.out.println(convertFromDecimal(15,3));
}

public static String convertFromDecimal(int number, int base) {
    String result = "";

    int lastQuotient = 0;

    for(int operatingNumber = number;operatingNumber > base; operatingNumber = operatingNumber/base) {
        result = getRepresantationOfLowIntValue(operatingNumber%base) + result;
        lastQuotient = operatingNumber/base;
    }

    result = getRepresantationOfLowIntValue(lastQuotient) + result;

    return result;
}

您可以在while循环内找到提示1中的要求。 提示2中的要求可以在下面找到。

private static String getRepresantationOfLowIntValue(int toConvert) {
    if(toConvert >= 0 && toConvert < 10) {
        return "" + toConvert;
    }

    switch(toConvert) {
        case 10 : return "A";
        case 11 : return "B";
        case 12 : return "C";
        case 13 : return "D";
        case 14 : return "E";
        case 15 : return "F";
    }

    return "Error, cannot transform number < 0 or > 15";
    //throw new IllegalArgumentException("cannot transform number < 0 or >15");
}