java算法-进制转换

学了这么久java,竟然才发现java的Integer类中已经把进制转换的方法写好了,直接用就行了,唉,失败。

 

一、十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。

  给出一个非负整数,将它表示成十六进制的形式。

输入格式

  输入包含一个非负整数a,表示要转换的数。0<=a<=2147483647

输出格式

  输出这个整数的16进制表示

样例输入

  30

样例输出

  1E

 

代码:

import java.util.Scanner;

import java.util.Stack;

public class Main1 {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);

        int x = scan.nextInt();

        scan.close();

/**

* 方法1

*/

       String[] b = new String[]{"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"};

        Stack<String> stack = new Stack<String>();

        int k,kk,a = k;

        if(a==0) System.out.println(0);

       while(a!=0) {

            k = a/16;

           if(k==0) {

                stack.push(b[a]);

            }else{

                kk = a%16;

                stack.push(b[kk]);

           }

            a/=16;

       }

       while(!stack.empty()) {

            System.out.print(stack.pop());

        }

/**

* 方法2

*/

        System.out.println(Integer.toString(x,16).toUpperCase());

    }

}

 

二、给定n个十六进制正整数,输出它们对应的八进制数。

输入格式

  输入的第一行为一个正整数n (1<=n<=10)。

  接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。

输出格式

  输出n行,每行为输入对应的八进制正整数。

  【注意】

  输入的十六进制数不会有前导0,比如012A。

  输出的八进制数也不能有前导0。

样例输入

  2

  39

  123ABC

样例输出

  71

  4435274

 

代码:

import java.util.Scanner;

    public class Main2 {

        public static void main(String[] args) {

            Scanner scan = new Scanner(System.in);

            int n = scan.nextInt();

            String[] a = new String[n];

            for (int i = 0; i < n; i++) {

                a[i] = Integer.toString(Integer.valueOf(scan.next(),16),8);

            }

            for (int i = 0; i < a.length; i++) {

                System.out.println(a[i]);

            }

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值