请用移位的方式打印出一个十进制整数的十六进制形式。要求按每4个二进制位对整数进行移位和去高位处理,得到的结果就是十六进制数的一位,然后按下面三种方式之一要求每种方式都用到  计算出一个十六进制数值对应的十六进制形式: 
1)0-9之间的数值直接加上字符'0',9以上的数值减去10以后再加上字符'A' 
2)定义一个数组,其中包含0-F这些字符,然后用要计算的数值作为数组的索引号,即可获得其对应的十六进制数据。 
3)Character.forDigit静态方法可以将一个十六进制的数字转变成其对应的字符表示形式,例如,根据数值15返回字符'F'。 

解决方案 »

  1.   

    试:public static void main(String[] args) {
            int number=8238824;
            System.out.println(Integer.toHexString(number));
            System.out.println("----------------");
            String s1="";
            String s2="";
            String s3="";
            for (int i=0;i<16;i++){
                int digit=number & 0xf;
                
                if (digit<10) s1=(char)('0'+digit)+s1;
                else s1=(char)('A'+digit-10)+s1;
                
                s2=hexNum[digit] + s2;
                
                s3 = Character.forDigit(digit,16) + s3;
                
                number = number>>4;
                if (number==0)break;
            }
            System.out.println(s1);
            System.out.println(s2);
            System.out.println(s3);
        }
      

  2.   

    不是考试题吧没听说过第1种方法可以的,c语言倒是可以其实这么简单的问题还要123什么的干吗?int i=83849;
    System.out.println(Integer.toString(i,16)); // over了,不知道你们老师在想什么如果不是考试题,23倒是可以告诉你怎么做
      

  3.   


    import java.util.Stack;public class Int2Hex {
        static char[] m={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F',};
        static Stack<Character> s;
        public static void printHex1(int i){  // 2用栈完成
            if(i<0){
                System.out.print('-');
                i=-i;
            }
            s=new Stack();
            while(i!=0){
                int n=i&0xf;
                s.push(m[n]);
                i>>=4;
            }
            while(!s.isEmpty()){
                System.out.print(s.pop());
            }
        }
        public static void printHex2(int i){  // 2用递归完成
            if(i<0){
                System.out.print('-');
                i=-i;
            }
            if(i==0)
                return;
            int n=i&0xf;
            i>>=4;
            printHex2(i);
            System.out.print(m[n]);
        }
        public static void printHex3(int i){  // 3用栈完成
            if(i<0){
                System.out.print('-');
                i=-i;
            }
            s=new Stack();
            while(i!=0){
                int n=i&0xf;
                s.push(Character.forDigit(n, 16));
                i>>=4;
            }
            while(!s.isEmpty()){
                System.out.print(s.pop());
            }
        }
        public static void printHex4(int i){  // 3用递归完成
            if(i<0){
                System.out.print('-');
                i=-i;
            }
            if(i==0)
                return;
            int n=i&0xf;
            i>>=4;
            printHex2(i);
            System.out.print(Character.forDigit(n, 16));
        }
        public static void main(String[] args){
            printHex1(-73802);
            System.out.println();
            printHex2(-1938);
            System.out.println();
            printHex3(-3332);
            System.out.println();
            printHex4(9304);
            System.out.println();
        }    
    }