黑马程序员技术交流社区
标题:
进制转换问题,请大家帮忙看看程序,为什么少个】?
[打印本页]
作者:
haozi050
时间:
2014-1-12 13:42
标题:
进制转换问题,请大家帮忙看看程序,为什么少个】?
本帖最后由 haozi050 于 2014-2-4 20:52 编辑
package day01;
/*需求:完成用户指定的十进制数转成16进制数.(版本2)
* 思路:1,用户指定的十进制数未知,需要定义变量。
* 2,要想转成十六进制,可以获取16进制的每一位,然后合并。怎么获取每一位?通过每次与15然后右移4位就可以得到每一位。
* 3,将得到的每一位存储到数组中,存储过程中判断num是否为0,为0则不再存储。用变量记录住存储的角标位置,然后反向遍历,
* 并存储到字符串变量中,或者逆向存储到属猪中然后存储到字符串中。
* */
public class HexTainslate2 {
public static void main(String[] args)
{
// 1,定义变量接受用户指定的十进制数。
int num=96;
// 2,调用转换方法得到十六进制字符串
String str=trainslate(num);
System.out.println(num+"的十六进制是"+str);
}
private static String trainslate(int num)
{
if(num==0)
return "0";
//定义数组用于存储获取的每一位。由于int只有32位,每4位一获取,所以最多只有8个字符
char [] ch=new char[8];
//定义变量记录最后一次存储在数组中的位置。
int index=0;
//2,将该数&15获取每一位
while(num!=0)
{
int temp=num&15;
//判断是否大于10,是则需要转换
/*if(temp>10)
ch[index]=(char)(temp-10+'a');
else
ch[index]=(char)(temp-0+'0');*/
ch[index]=temp>10?(char)(temp-10+'a'):(char)(temp-0+'0');
//3,将该十进制数右移4位。
num=num>>>4;
index++;
}
// 将数组中字符转成字符串
return toString(ch,index);
}
private static String toString(char[] ch,int index)
{
String s="[";
for (int i = index-1; i >=0; i--)
{
if(index!=0)
s=s+ch[i]+",";
else
s=s+ch[i]+"]";
}
return s;
}
}
复制代码
结果是:96的十六进制是[6,0,
作者:
xu6148152
时间:
2014-1-12 14:04
private static String toString(char[] ch,int index)
{
String s="[";
for (int i = index-1; i >=0; i--)
{
if(index!=0)
s=s+ch
+",";
else
s=s+ch
+"]";
}
return s;
}
并没有对index进行操作。index--;
所以else的部分,不会执行。
作者:
taoge
时间:
2014-1-12 14:14
private static String toString(char[] ch,int index)
{
String s="[";
for (int i = index-1; i >=0; i--)
{
if(index!=0)
s=s+ch[i]+",";
}
s=s+"]"; //这里,你把else下面的语句拿出来
return s;
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2