- 补上昨天的代码,昨天做的是10进制转16进制的算法,这个算法是由于最近要考单片机考试了,其中有一个题,因为单片机编程中一般都是16进制,所以涉及到进制转换,我就想怎样用程序写出来,在和女朋友激烈的讨论后得出核心步骤,最后通过自己优化得到了下面的版本。
- 其实一开始我们的想法是准备将除以16算出的余数入栈的,因为栈的特点是先入后出,正好符合我们进制转换时的算法规律,后来一想没必要,我们直接将数字转化成对应的char类型值,最后再将字符串拼接起来就可以了。
- 一开始以为很简单,一顿琢磨之后发现,还是有些复杂。
public class Main103 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int y=0;
char c=' ';
String s=" ";
while (n%16!=0||n/16!=0) {
y=n%16;
if(y/10==1){
c=(char) (y%10+65);//65表示A
}else c=(char)(y+48);//48表示0
s=c+s;
n=n/16;
}System.out.println(s);
}
}
大学生一枚,多多指教。