十进制转十六进制

方法一:前面有0没去掉,如:0000001E

import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int a=scanner.nextInt();
        StringBuilder stringBuilder=new StringBuilder();
        for(int x=0;x<8;x++) {
            int temp=a&15;
            if(temp>9) {
                char c=(char)(temp-10+'A');
                stringBuilder.append(c);
            }
            else
                stringBuilder.append(temp);
            a=a>>>4;
        }
        System.out.println(stringBuilder.reverse());//0000001E
        scanner.close();
    }
}

方法二:输出结果是小写字母
而且当输入的数比较大时,会出现 InputMismatchException

import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int i=scanner.nextInt();
        System.out.println(Integer.toHexString(i));
        scanner.close();
    }
}

方法三:查表法

import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int a=scanner.nextInt();
        char[] chs=new char[]{'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
        int pos=0;
        char[] arr=new char[8];
        if(a==0) {
            System.out.print(0);
            scanner.close();
            return;
        }
        while(a!=0) {
            int temp=a&15;
            arr[pos++]=chs[temp];
            a=a>>>4;
        }
        for(int x=pos-1;x>=0;x--) {
            System.out.print(arr[x]);
        }
        scanner.close();
    }
}

方法四:最普通的:按除16取余倒数(也可使用格式输出)

import java.util.Scanner;
import java.util.Stack;

public class Main{
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int a=scanner.nextInt();
        Stack stack=new Stack();
        if(a==0) {
            System.out.print(0);
            scanner.close();
            return;
        }
        while(a>0) {
            int temp=a%16;
            String string=temp+"";
            if(temp>9) {
                switch(temp) {
                case 10:
                    string="A";
                    break;
                case 11:
                    string="B";
                    break;
                case 12:
                    string="C";
                    break;
                case 13:
                    string="D";
                    break;
                case 14:
                    string="E";
                    break;
                case 15:
                    string="F";
                    break;
                }
            }
            stack.push(string);
            a=a/16;
            }
        while(!stack.empty()) {
            System.out.print(stack.pop());
        }
        scanner.close();
    }
}

你可能感兴趣的:(算法)