黑马程序员技术交流社区

标题: 每天一题坚持一个月....之七 [打印本页]

作者: 刘胜寒    时间: 2013-4-14 09:15
标题: 每天一题坚持一个月....之七
描述
将十进制数转换成十六进制数。
输入
包括多组测试数据。输入一个不超过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


作者: 邵震    时间: 2013-4-14 09:18
抢沙发 貌似这个我会做
作者: 刘胜寒    时间: 2013-4-14 09:21
API文档
有几个方法
BigInteger(String val, int radix)
将指定基数的 BigInteger 的字符串表示形式转换为 BigInteger。

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

java确实很强大....


作者: 刘胜寒    时间: 2013-4-14 10:35
邵震 发表于 2013-4-14 09:18
抢沙发 貌似这个我会做

貌似这个不是Int类型的哦....
也不是Long类型的
是属于大数范畴...
BigInteger里面有几个方法...你可以用一下
但是用BigInteger里面的方法这题就没啥意思了
作者: 邵震    时间: 2013-4-14 10:49
刘胜寒 发表于 2013-4-14 10:35
貌似这个不是Int类型的哦....
也不是Long类型的
是属于大数范畴...

:L我现在在看异常 我直接把你这个输入超过2位数定位异常  哼哼
作者: 黄玉昆    时间: 2013-4-14 14:09
如果问题未解决,请继续追问,如果没有问题了,请将帖子分类 改为“已解决”,谢谢
作者: 刘胜寒    时间: 2013-4-15 10:57
  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
如果楼主喜欢分享一些代码,建议楼主可以在代码分享专区里发帖,谢谢
作者: 刘胜寒    时间: 2013-4-15 13:51
  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. }
复制代码

作者: 张旺达    时间: 2013-4-15 14:10
寒哥今天心情好? 竟然来了个简单的{:soso_e113:}
作者: 刘胜寒    时间: 2013-4-15 14:38
张旺达 发表于 2013-4-15 14:10
寒哥今天心情好? 竟然来了个简单的

不上课...哈哈
作者: 张旺达    时间: 2013-4-15 20:45
刘胜寒 发表于 2013-4-15 14:38
不上课...哈哈

好吧。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2