黑马程序员技术交流社区
标题:
关于进制转化,给大家一个错误的方法,修改正确有奖励
[打印本页]
作者:
王震阳老师
时间:
2012-9-25 21:28
提示:
该帖被管理员或版主屏蔽
作者:
王震阳老师
时间:
2012-9-25 21:36
上面是我学习进制转化是,误以为自己写好了,当我保存后,我发现我错了,哪里错了,亲们看看吧
作者:
王震阳老师
时间:
2012-9-25 21:57
//改进后,正确的方法。
class myTranse //将一个数字转化为2、8、10进制
{
public static void main(String[] args)
{
sop(transe(12978,16));
sop(transe(11,8));
sop(transe(11,2));
}
public static int[] transe(int num,int jinZhi)//此处的jinZhi指要将num转化为的进制类型,只能填2、8、16;
{
if(jinZhi==2)//当需要转化为二进制的时候
{
int length=0;//定义数组的长度,初始化为0;
int temp=num;//定义一个变量,临时存储num
while(temp>0)//第一次循环,确定数组的准确的长度
{
length++;
temp>>=1;
}
int[] arr=new int[length];
while(num>0)//再次循环,将计算结果放入数组中
{
arr[--length]=num&1;
num>>=1;
}
return arr;
}
if(jinZhi==8)//当要转化为8进制时
{
int length=0;//定义数组的长度,初始化为0;
int temp=num;//定义一个变量,临时存储num
while(temp>0)//第一次循环,确定数组的准确的长度
{
length++;
temp>>=3;
}
int[] arr=new int[length];
while(num>0)//再次循环,将计算结果放入数组中
{
arr[--length]=num&7;
num>>=3;
}
return arr;
}
if(jinZhi==16)//当要转化为16进制时
{
int length=0;//定义数组的长度,初始化为0;
int temp=num;//定义一个变量,临时存储num
while(temp>0)//第一次循环,确定数组的准确的长度
{
length++;
temp>>=4;
}
int[] arr=new int[length];
while(num>0)//再次循环,将计算结果放入数组中
{
arr[--length]=((num&15)>9)?((num&15)+55):num&15;
num>>=4;
}
return arr;
}
return new int[0];
}
private static void sop(int[] arr)
{
for(int i=0;i<arr.length;i++)
{
if(arr[i]<10)
System.out.print(arr[i]);
else
System.out.print((char)arr[i]);
}
System.out.println();
}
}
复制代码
作者:
黑马杨晨
时间:
2012-9-25 22:06
回复得分
作者:
孙岳
时间:
2012-9-25 22:45
支持下!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2