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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 胡建伟 于 2014-3-11 11:42 编辑

需求: 完成10个整数 与2进制,8进制,16进制的转换,并编程验证转换结果。
要求:不用笔算,而用编程实现,进制转换
该怎么编写呢?都过十二点了,还没想出来办法,头疼啊!!!:Q

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

5 个回复

倒序浏览
import java.util.*;
class HomeWork
{
        public static void main(String[] args) //main方法,保证程序能够独立运行
        {
                Scanner in = new Scanner(System.in);
               
                //这个程序的功能是完成10个整数向2,8,16进制的转换
                int num; //输入的整数
                System.out.println("这是第一题的答案:");
                for(int i=0; i<10; i++)//一共循环10次
                {
                        System.out.println("请输入第"+(i+1)+"个整数");
                        num = in.nextInt();
                        System.out.println("二进制形式为:"+Integer.toBinaryString(num));
                        System.out.println("八进制形式为:"+Integer.toOctalString(num));
                        System.out.println("十六进制形式为:"+Integer.toHexString(num));
                        System.out.println();
                }
回复 使用道具 举报
最后少个}自行补上
回复 使用道具 举报
public class ArrayTest7 {

        public static void main(String[] args) {
                toBin(2);
                System.out.println();
                toHex(60);
                System.out.println();
                toOctonary(15);
        }
        public static void toBin(int num){
                trans(num, 1, 1);
        }
        public static void toOctonary(int num){
                trans(num, 7, 3);
        }
        public static void toHex(int num){
                trans(num, 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 j = pos; j < arr.length; j++) {
                        System.out.print(arr[j]);
                       
                }
        }
}
这是我理解的方法,不知符不符合题意。


评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
  1. import java.util.*;
  2. public class ArrayTestToBOH
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 System.out.print("输入一个要转成2、8、16进制的数:");
  7.         Scanner in = new Scanner(System.in);   
  8.         int num=in.nextInt();

  9.         System.out.print("\t转成2进制:");
  10.         toB_O_H(num,2);
  11.         System.out.println("\n  系统函数转成2进制:"+Integer.toBinaryString(num));
  12.         
  13.         System.out.print("\t转成8进制:");
  14.         toB_O_H(num,8);
  15.         System.out.println("\n  系统函数转成8进制:"+Integer.toOctalString(num));
  16.         
  17.         System.out.print("\t转成16进制:");
  18.         toB_O_H(num,16);
  19.         System.out.println("\n  系统函数转成16进制:"+Integer.toHexString(num));
  20.         }
  21.          public static void toB_O_H(int num,int JZhi)
  22.      {
  23.                  int m,n;
  24.                  if(JZhi==2)
  25.                  {
  26.                          m=1;
  27.                          n=1;
  28.                  }
  29.                  else if(JZhi==8)
  30.                  {
  31.                          m=7;
  32.                          n=3;
  33.                  }
  34.                  else
  35.                  {
  36.                          m=15;
  37.                          n=4;
  38.                  }
  39.                  char[] chs = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
  40.          char[] arr = new char[32];
  41.          int pos = arr.length;
  42.          while(num!=0)
  43.          {
  44.                  int temp = num&m;
  45.                  arr[--pos] = chs[temp];
  46.                  num>>>=n;
  47.          }
  48.          for(int i=pos ;i<arr.length; i++)
  49.              System.out.print(arr[i]);
  50.      }
  51. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
这是毕老师讲的进制转换查表法

  1. 参数中的num为需要转换的数字,base为相与的基数 二进制为1,八进制为7,十六进制为15
  2. dffset为移位的个数二进制为1,八进制为3,十六进制为4
  3. 如果是数组 那修改一下就可以了
  4. public static void trans(int num,int base,int offset){
  5.     //建表
  6.                  char[] ch={'0','1','2','3','4','5','6','7','8','9','A',
  7.                                  'B','C','D','E','F'};
  8.     //定义数组存放结果
  9.                  char[] result=new char[32];
  10.                  int pos=result.length;
  11.                  while(num!=0){
  12.                          int temp=num&base;
  13.    //查表
  14.                          result[--pos]=ch[temp];
  15.    //移位
  16.                          num=num>>>offset;
  17.                  }
  18.     //输出结果
  19.                  for(int i=pos;i<result.length;i++)
  20.                          System.out.print(result[i]);
复制代码

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

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