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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 龚建锋 初级黑马   /  2012-7-20 23:43  /  1554 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Trans
{
public static void main(String[] args)
{
          trans(99,1,1);//二进制
    trans(99,7,3);//八进制
    trans(99,15,4);//十六进制
}
public static void trans(int num,int base,int offset)
{
  char[] chs={'0','1','2','3','4','5','6','7','8','9',
            'A','B','C','D','E','F'};
  char[] arr=new char[32];
  int pos=arr.length;
  
  while(num!=0)
  {
   int temp=num&base;
   arr[--pos]=chs[temp];
   
   num=num>>>offset;
  }
  for(int x=pos;x<arr.length;x++)
  {
   System.out.println(arr[x]);
   
  }
}
}
运行时, System.out.println(arr[x]);不加ln则运行结果如图1,加ln运行结果如图2,能有什么方法让输出结果是1100011   143   63 吗?


1.jpg (2.93 KB, 下载次数: 76)

图1

图1

2.jpg (4.49 KB, 下载次数: 76)

图二

图二

2 个回复

正序浏览
class Trans {
        public static void main(String[] args) {
                trans(99, 1, 1);// 二进制

                //打印换行或者空格
                trans(99, 7, 3);// 八进制

                 //打印换行或者空格
                trans(99, 15, 4);// 十六进制
        }

        public static void trans(int num, int base, int offset) {
                char[] chs = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A',
                                'B', 'C', 'D', 'E', 'F' };
                char[] arr = new char[32];
                int pos = arr.length;

                while (num != 0) {
                        int temp = num & base;
                        arr[--pos] = chs[temp];

                        num = num >>> offset;
                }
                for (int x = pos; x < arr.length; x++) {
                        System.out.print(arr[x]); //1100011 143  63  这个地方不换行

                }
                System.out.println(); //当输完了一种进制数后,可以在这里换行,或者打印空格
              //  System.out.print(" ");
               
        }
}



1、就是没调用完一次trans 时,换行或者打印空格
2、可以在trans方法里面写,也可以在主函数的每次调用完一个方法后面写
3、哥们,看你的这个程序,写的还不错啊,用到了位运算,C语言应该蛮熟练的吧,哈哈


评分

参与人数 1技术分 +1 收起 理由
蒋映辉 + 1

查看全部评分

回复 使用道具 举报

  1.        你的代码不变
  2. --------------------------------------
  3. for(int x=pos;x<arr.length;x++)
  4.   {
  5.    System.out.print(arr[x]);  //[color=Red]改动1: 输出不用换行 [/color]   
  6.   }
  7. System.out.println();//[color=Red]转换函数结束时换行[/color]}
  8. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马