代码之家  ›  专栏  ›  技术社区  ›  KenProgrammer

Java十进制到十六进制的使用基础

  •  0
  • KenProgrammer  · 技术社区  · 7 年前

    我一直在研究数制计算器 (refer to my binary question)

    Enter Number: 165
    Enter Base: 16
    The answer: A105
    

    这是我的代码:

    int given = 0, base = 0, remainder = 0; 
    String output = "";
    if (base == 2||base == 8){
        while(given != 0){
            remainder = given % base;
            given /= base;
            output = remainder + output;
        }
        System.out.println(output);
    }
    else if (base == 16){
        while (given > 0){
            remainder = given % base;
            if (remainder <= 10){
                System.out.print("");
            }
            switch(remainder){
                case 10:System.out.print("A");break;
                case 11:System.out.print("B");break;
                case 12:System.out.print("C");break;
                case 13:System.out.print("D");break;
                case 14:System.out.print("E");break;
                case 15:System.out.print("F");break;
            }
            given /= base;
            output = remainder + output;
        }
        System.out.println(output);
    }
    

    我应该选择继续切换结构,还是我的代码有问题?

    编辑:为了清楚起见, output 变量将反转给定的特定值。如果我把一个37作为十进制数转换成二进制数,它就会输出 101001 .

    1 回复  |  直到 7 年前
        1
  •  0
  •   Eran    7 年前

    while (given > 0){
        remainder = given % base;
        if (remainder >= 10){
          switch(remainder){
            case 10:output = "A" + output;break;
            case 11:output = "B" + output;break;
            case 12:output = "C" + output;break;
            case 13:output = "D" + output;break;
            case 14:output = "E" + output;break;
            case 15:output = "F" + output;break;
          }
        } else {
          output = remainder + output;
        }
        given /= base;
    }
    System.out.println(output);