Java實現十進制數轉十六進制數


Now~Let's begin our second question~

如何利用Java語言將十進制數字轉換成十六進制數字呢?

我第一次編碼出來的效果是醬紫的~

/**
 * 
 */
package com.succez.task2;

import java.util.Scanner;

/**
 * <p>Copyright: Copyright (c) 2018</p>
 * <p>succez</p>
 * @author ZhangJinjin
 * @createdate 2018年5月3日
 */
public class intToHex {

    /**
     * 先輸入一個整型數字,判斷其是否為0,若為0,則其16進制同樣為0;
     * 若number不為0,則對16取余,並轉換成16進制相應的字符;
     * number=number/16,重復過程2、3,用字符數組s依次保存每一位;
     * 輸出的時候逆序輸出即可
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int number = sc.nextInt();
        int i = 0;
        char[] S = new char[100];
        if(number == 0){
            System.out.print(0);
        }
        else{
            while(number!=0)  
            {
                int t=number%16;
                if(t >=0 && t<10)  
                {
                    S[i] = (char)(t+'0');
                    i++;
                }
                else
                {
                    S[i] = (char)(t+'A'-10);
                    i++;
                }
                number=number/16;
            } 
            
            for (int j=i-1;j>=0;j--)
            {  
                System.out.print(S[j]);
            }
        }
    }
}

 

Of course It's true~

As you can see from the picture~


然而,經過討論,我們發現盡管這樣可以實現它的功能,但是需要費腦子去思考,那么,可不可以很明顯清晰地表達呢~

那么,經過一番修改,這樣子應該可以了吧~

/**
 * 
 */
package com.succez.task2;

import java.util.Scanner;

/**
 * <p>Copyright: Copyright (c) 2018</p>
 * <p>succez</p>
 * @author ZhangJinjin
 * @createdate 2018年5月4日
 */
public class intToHex_Alter {

    /**
     * 這次算法用了StringBuffer效率更好
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        System.out.println("請輸入要轉換的十進制的數:");
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();        
        System.out.println("轉換的十六進制的數為:"+intToHex(n));
    }

    private static String intToHex(int n) {
        StringBuffer s = new StringBuffer();
        String a;
        char []b = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
        while(n != 0){
            s = s.append(b[n%16]);
            n = n/16;            
        }
        a = s.reverse().toString();
        return a;
    }

}

嘻嘻~已經提交啦,OK~

下面來看看 StringBuffer

 

String類型的相加效率並不高,所以這個時候就要考慮StringBuffer里面的append()這個方法~

OK,簡直完美~

/**
 * 
 */
package com.succez.task2;

import java.util.Scanner;

/**
 * <p>Copyright: Copyright (c) 2018</p>
 * <p>succez</p>
 * @author ZhangJinjin
 * @createdate 2018年5月4日
 */
public class intToHex_Alter {

    /**
     * 這次算法用了StringBuffer效率更好
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        System.out.println("請輸入要轉換的十進制的數:");
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();        
        System.out.println("轉換的十六進制的數為:"+intToHex(n));
    }

    private static String intToHex(int n) {
        //StringBuffer s = new StringBuffer();
        StringBuilder sb = new StringBuilder(8);
        String a;
        char []b = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
        while(n != 0){
            sb = sb.append(b[n%16]);
            n = n/16;            
        }
        a = sb.reverse().toString();
        return a;
    }

}

 


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM