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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李天富 中级黑马   /  2014-8-24 00:09  /  1198 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class  Jinzhi
{
        public static void main(String[] args)
        {
                int num=2748;
                char m,n1,n2,n3,n4,n5,n6,n7,n8;
                m=n1=n2=n3=n4=n5=n6=n7=n8=0;
                for(int i=1;i<9;i++)
                {
                        int Temp=num>>>(4*(i-1));//逐次右移。
                        int n=Temp&15;//获取数据末4位。
                        m=(char)((n>9)?(n-10+'a'):(n-1+'1'));
                        switch(i)//分别赋值给n1-n8。
                        {
                                case 1:n1=m;        
                                break;
                                case 2:n2=m;        
                                break;
                                case 3:n3=m;        
                                break;
                                case 4:n4=m;        
                                break;
                                case 5:n5=m;        
                                break;
                                case 6:n6=m;        
                                break;
                                case 7:n7=m;        
                                break;
                                case 8:n8=m;        
                                break;
                                default:
                        }

                        
                }
                System.out.println(num+"的十六进制是:");
                System.out.println(n8+""+n7+""+n6+""+n5+""+n4+""+n3+""+n2+""+n1);
               
        }
}
本人新手,刚看完毕老师基础视频的循环,试着写了之前讲的求一个int型数据十六进制。由于没学怎么输入,说以只能先定义变量了,求大神简单指点一下如何从控制台输入数据,另外,代码里switch语句总感觉应该用for来实现,但就是想不到怎么做,求指点啊!

3 个回复

倒序浏览
给你一个传送门,从控制台输入数据的:http://bbs.itheima.com/thread-137262-1-1.html
另外简单改了下你的代码= =

  1. class  Jinzhi1
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int num=2748;
  6.                                 System.out.println(num+"的十六进制是:");
  7.                 char m;
  8.                 for(int i=0;i<8;i++)
  9.                 {
  10.                         int Temp=num&15;//进制都是先与了之后,再右移的
  11.                                                 if(Temp==0)//这里加个判断,移到前面都是0的话,用break跳出循环,无论什么进制,0都是一样的
  12.                                                         break;
  13.                                                 num=num>>>4;
  14.                                                 m=(char)((Temp>9)?(Temp-10+'a'):(Temp-1+'1'));
  15.                                                 System.out.print(m+" ");//这里我直接打印了,没倒过来,等你学到数组,这里就可以用for循环做了= =
  16.                                 }
  17.                 }
  18. }
复制代码
回复 使用道具 举报
Imp_x 发表于 2014-8-24 00:51
给你一个传送门,从控制台输入数据的:http://bbs.itheima.com/thread-137262-1-1.html
另外简单改了下你的 ...

谢谢啊,你说对我太有用了,很有启发!我去看了下控制台输入的方法,虽然细节不是很明白,姑且照搬过来了,至于数组什么的,临时翻到后面看了下,不太懂,就暂时先不用了。还有你说的if判断条件的问题,我觉得是不是应该对num判断而不是temp?还有这个移位和与的问题,这个程序里面,在获取最高四位的时候(假设最高四位有值),与完就不用移位了,不过好像影响也不大,可能是我想多了吧。再次感谢!!!修改了下代码:
  1. import java.util.Scanner;
  2. class  Jinzhi
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 Scanner in=new Scanner(System.in);
  7.                 int num=in.nextInt();
  8.                 System.out.println(num+"的十六进制是:");
  9.                 char m,n1,n2,n3,n4,n5,n6,n7,n8;
  10.                 m=n1=n2=n3=n4=n5=n6=n7=n8='0';
  11.                 for(int i=1;i<9;i++)
  12.                 {
  13.                        
  14.                         int n=num&15;//获取数据末4位。
  15.                         m=(char)((n>9)?(n-10+'a'):(n-1+'1'));
  16.                         switch(i)//分别赋值给n1-n8。
  17.                         {
  18.                                 case 1:n1=m;       
  19.                                 break;
  20.                                 case 2:n2=m;       
  21.                                 break;
  22.                                 case 3:n3=m;       
  23.                                 break;
  24.                                 case 4:n4=m;       
  25.                                 break;
  26.                                 case 5:n5=m;       
  27.                                 break;
  28.                                 case 6:n6=m;       
  29.                                 break;
  30.                                 case 7:n7=m;       
  31.                                 break;
  32.                                 case 8:n8=m;       
  33.                                 break;
  34.                                 default:
  35.                         }
  36.            
  37.             num=num>>>4;
  38.                         if(num==0)
  39.                                 break;

  40.                        
  41.                 }
  42.                
  43.                 System.out.println(n8+""+n7+""+n6+""+n5+""+n4+""+n3+""+n2+""+n1);
  44.                
  45.         }
  46. }
复制代码



回复 使用道具 举报
李天富 发表于 2014-8-24 16:54
谢谢啊,你说对我太有用了,很有启发!我去看了下控制台输入的方法,虽然细节不是很明白,姑且照搬过来了 ...

if判断那里应该是像你说的判断num,昨晚没多想这些细节哈,判断temp的话会多做一次步骤。
还有建议编程的时候尽量使用英文来定义变量,像a、b、c、n这些定义出来只有自己知道的变量,还不如temp(临时变量)这样方便别人阅读,本人是个英语渣,也在慢慢逼着自学~ ~共勉吧{:3_64:}一块钱到手
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马