【PTA代码+图示】10进制转换成16进制 (堆栈操作)
💗题目 :
要求实现十进制(正整数)到十六进制的转换,用户输入10进制的数,要求输出该数的16进制表示
注意: 要求输出的英文字母全部都是大写
💗思路 :
十六进制是一种基数为16的数制,其中0到9的数字与A到F的字母表示10到15。
我们可以采用余数法来将10进制正整数转换成16进制,我们选择 栈数据结构 来作为容器.
💗步骤 :
- 循环取余: 首先,我们初始化一个栈(
Stack
),然后进入一个循环,直到输入的十进制数n
变为0。 - 余数计算: 在每次循环中,计算
n
除以16的余数,这个余数表示十六进制中的一个位。余数的范围是0到15。 - 将余数入栈: 将余数(0到15之间的整数)入栈,即使用
push
方法将余数添加到栈中。 - 整除: 然后,将
n
除以16,以准备进行下一次循环。这相当于将n
右移4位。 - 取出栈顶元素: 循环结束后,堆栈中将包含十六进制数的各个位(从低位到高位)。我们从堆栈中弹出这些位。
- 十进制转十六进制: 对于每个弹出的位,如果它小于10,就将其打印为数字;如果大于等于10,就将其转换为十六进制字母,例如’A’到’F’。
- 打印: 最后,打印这些数字和字母,从低位到高位,以获得输入十进制数的十六进制表示。
💗图解 :
💗代码 :
package day04; import java.util.Scanner; import java.util.Stack; public class Test01 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入一个十进制的正整数:"); int n = scanner.nextInt(); hexConversion(n); } public static void hexConversion( int n){ Stack stack = new Stack(); //循环取余 while(n!=0){ int remainder = n % 16; stack.push(remainder);//压栈 n/=16; } //进制转换->输出 while(!stack.empty()){ int digit = (int)stack.pop(); if (digit<10){ System.out.print(digit); }else{ char hexChar = (char) ('A' + (digit - 10)); System.out.print(hexChar); } } } }
💗结果 :
💕求三连!!!