进制间的转换,不使用Interger.toBinaryString(int) 等方法

十进制转二进制


import java.util.Scanner;
class Main {
  public static void main(String[] args){
    Scanner input = new Scanner(System.in);
    int numberNotChange = 0;
    
    do{
      //获得输入de整数
      System.out.print("\nEnter a int number: ");
      numberNotChange = input.nextInt();
      int number = numberNotChange;
      String numbertoBinaryString = "";
      //如果为负数变成正数
      number = (number >=0 ? number : (0 - number));
      //如果为0输出值并结束程序
      if(number == 0)
        System.out.print(number + " 的二进制是: 0");
      //计算不为0的二进制值       
      while(number != 0){
        numbertoBinaryString = (number % 2) + numbertoBinaryString;
        number = number / 2;
      }
      //输出二进制
      if(numberNotChange!=0)
        System.out.print((numberNotChange > 0) ? numberNotChange + " 的二进制是: "  
                       + numbertoBinaryString : numberNotChange + " 的二进制是: -"  
                       + numbertoBinaryString);
    }while(numberNotChange != 0);
        input.close();
  }
}

十进制转十六进制


import java.util.Scanner;
class Main {
  public static void main(String[] args){
    Scanner input = new Scanner(System.in);
    int numberNotChange = 0;
    
    do{
      //获得输入的整数
      System.out.print("\nEnter a int number: ");
      numberNotChange = input.nextInt();
      int number = numberNotChange;
      String numberToHexString = "";
      //如果为负数变成正数
      number = (number >=0 ? number : (0 - number));
      //如果为0输出值并结束程序
      if(number == 0)
        System.out.print(number + " 的十六进制是: 0");
      //计算不为0的十六进制值       
      while(number != 0){
        int numberToHex = number % 16;
        String numberString = "";
        //0-9
        if(numberToHex >= 0 && numberToHex <= 9)
          numberString = numberToHex + "";
        //10-15
        switch(numberToHex){
          case 10:
            numberString = "A";
            break;
          case 11:
            numberString = "B";
            break;
          case 12:
            numberString = "C";
            break;
          case 13:
            numberString = "D";
            break;
          case 14:
            numberString = "E";
            break;
          case 15:
            numberString = "F";
            break;
        }
        numberToHexString = numberString + numberToHexString;
        number = number / 16;
      }
      //输出十六进制
      if(numberNotChange!=0)
        System.out.print((numberNotChange > 0) ? numberNotChange + " 的十六进制是: "  
                       + numberToHexString : numberNotChange + " 的十六进制是: -"  
                       + numberToHexString);
    }while(numberNotChange != 0);
        input.close();
  }
}

posted @ 2022-05-27 15:24  Scenery_Shelley  阅读(30)  评论(0)    收藏  举报