A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘胜寒 金牌黑马   /  2013-4-14 09:15  /  2371 人查看  /  11 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

描述
将十进制数转换成十六进制数。
输入
包括多组测试数据。输入一个不超过100位正整数,无前导零。
输入以0结束。
输出
输出其十六进制表示(不打印前导零,A~F字母大写)。
样例输入

12
20
12345678901234567890
0


样例输出

C
14
AB54A98CEB1F0AD2




明天写答案.....不知道BigInteger 有没有进制转换这么一说哈哈哈


/友情链接
每天一题坚持一个月....之六
http://bbs.itheima.com/thread-45434-1-1.html

每天一题坚持一个月....之五
http://bbs.itheima.com/thread-45288-1-1.html
每天一题坚持一个月....之四
http://bbs.itheima.com/thread-45153-1-1.html
每天一题坚持一月....之三
http://bbs.itheima.com/thread-44986-1-1.html
每天一题坚持一个月....之二
http://bbs.itheima.com/thread-44819-1-1.html
每天一题坚持一个月....之一
http://bbs.itheima.com/thread-44753-1-1.html

11 个回复

倒序浏览
抢沙发 貌似这个我会做
回复 使用道具 举报
API文档
有几个方法
BigInteger(String val, int radix)
将指定基数的 BigInteger 的字符串表示形式转换为 BigInteger。

String toString(int radix)
返回此 BigInteger 的给定基数的字符串表示形式。

java确实很强大....

回复 使用道具 举报
邵震 发表于 2013-4-14 09:18
抢沙发 貌似这个我会做

貌似这个不是Int类型的哦....
也不是Long类型的
是属于大数范畴...
BigInteger里面有几个方法...你可以用一下
但是用BigInteger里面的方法这题就没啥意思了
回复 使用道具 举报
刘胜寒 发表于 2013-4-14 10:35
貌似这个不是Int类型的哦....
也不是Long类型的
是属于大数范畴...

:L我现在在看异常 我直接把你这个输入超过2位数定位异常  哼哼
回复 使用道具 举报
如果问题未解决,请继续追问,如果没有问题了,请将帖子分类 改为“已解决”,谢谢
回复 使用道具 举报
  1. public static void main(String[] args)
  2.         {
  3.                 Scanner cin = new Scanner(System.in);
  4.             String str;
  5.                
  6.             while(cin.hasNext())
  7.                 {
  8.                         str = cin.next();
  9.                         if("0".equals(str)) break;
  10.                         BigInteger  BI = new BigInteger(str);
  11.                         str = BI.toString(16);
  12.                         System.out.println(str.toUpperCase());
  13.                 }
  14.         }
复制代码
最简单的方法
记得导入 java.math.*;
java.util.*;
回复 使用道具 举报
黄玉昆 黑马帝 2013-4-15 12:37:01
8#
如果楼主喜欢分享一些代码,建议楼主可以在代码分享专区里发帖,谢谢
回复 使用道具 举报
  1. import java.util.*;
  2. import java.math.*;
  3. import java.io.*;
  4. class  Radiux
  5. {
  6.         /*
  7.          * 其中字符串转换成二进制
  8.          * 二进制转换成16进制可以继续封装
  9.          */
  10.         private String num;
  11.         private StringBuilder SB = new StringBuilder();
  12.         private char[] MyCode ={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; //不说你也懂
  13.         private int[] Bin = {1,2,4,8};//这个你也懂
  14.         private String ans="";//保存结果
  15.         Radiux(String num)//构造函数
  16.         {
  17.                 this.num = num;
  18.         }
  19.         public void show()
  20.         {
  21.                 char[] arr = num.toCharArray();
  22.                 int len = num.length();
  23.                 boolean flag = true;
  24.                 int Mod = 0,Tmp;
  25.                 ans = "";
  26.                 while(flag==true)//转换成二进制
  27.                 {
  28.                         if((arr[len-1]-'0')%2==0) SB.append("0");
  29.                         else SB.append("1");
  30.                         flag = false;
  31.                         Mod = 0;
  32.                         for(int i=0;i<len;i++)
  33.                         {
  34.                                 Tmp = arr[i]-'0'+Mod*10;
  35.                                 Mod = Tmp%2;
  36.                                 Tmp/=2;       
  37.                                 if(Tmp!=0)flag = true;
  38.                                 arr[i]= (char)(Tmp+'0');
  39.                         }
  40.                 }
  41.                 //System.out.println(SB.toString());
  42.                
  43.                 for(int i=0;i<SB.length();i+=4)//把二进制转换成16进制    四个二进制位  可以转换成一位16进制
  44.                 {
  45.                         Tmp=0;
  46.                         for(int j=i;j<i+4&&j<SB.length();j++)
  47.                                 Tmp += (SB.charAt(j)-'0')*Bin[j%4];
  48.                         ans = MyCode[Tmp] + ans;
  49.                 //        System.out.println("Tmp = "+Tmp);
  50.                 //        System.out.println();
  51.                 }
  52.                 SB.delete(0, len);//清空 StringBuilder
  53.                 System.out.println(ans);
  54.         }
  55. }
  56. public class Cow
  57. {
  58.         public static void main(String[] args)
  59.         {
  60.                 Scanner cin = new Scanner(System.in);
  61.             String str;
  62.                
  63.             while(cin.hasNext())
  64.                 {
  65.                     str = cin.next();
  66.                         Radiux R = new Radiux(str);
  67.                         R.show();
  68.                 }
  69.         }
  70. }
复制代码
回复 使用道具 举报
寒哥今天心情好? 竟然来了个简单的{:soso_e113:}
回复 使用道具 举报
张旺达 发表于 2013-4-15 14:10
寒哥今天心情好? 竟然来了个简单的

不上课...哈哈
回复 使用道具 举报
刘胜寒 发表于 2013-4-15 14:38
不上课...哈哈

好吧。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马